slider.opaque = NO тоже не работает. Я также зарегистрировал альфа-значение с помощью NSLog (@ "% f", slider.alpha), и оно печатает 0,4, 0,5 и 0,6. В приложении, где есть эта ошибка, у меня есть только один ползунок, цикл был просто для иллюстрации проблемы. Спасибо за предложения.

у представление UISlider игнорирует альфа-представление при значении 0,5?

Код:

for (int i = 0; i < 3; i++) {
  UISlider *slider = [[[UISlider alloc]
                       initWithFrame:CGRectMake(0, i * 30, 200, 30)]
                      autorelease];
  slider.alpha = 0.4 + (CGFloat)i / 10.0f;
  [window addSubview:slider];
}

Результат:

Ползунки имеют альфа-значения 0,4, 0,5 и 0,6. И, как вы можете видеть, средний с 0,5 полностью непрозрачен. Это швы, чтобы происходить только с альфа 0,5. Протестировали другие контроллеры пользовательского интерфейса, и они работают, как ожидается, с альфа установленным на 0,5.

Воспроизведено с iOS 4.2 на реальном устройстве и с iOS 3.2 и 4.2 в симуляторе.

Кстати, если кому-то интересно, как и почему я столкнулся с этой проблемой, это конфигурация скользящего направления для игры-головоломки под названиемскользкий.

 Eric13 янв. 2011 г., 18:37
Потратив пару минут на то, чтобы поиграть с ним сам, он, похоже, выглядит как баг. Я бы предложил подать отчет об ошибке в Apple -developer.apple.com/bugreporter
 Marcelo Cantos07 февр. 2011 г., 05:44
Кроме того, удалитеautorelease (это может быть глупым предложением, но так как вы уже цепляетесь за соломинку, это довольно простая «соломинка» для тестирования).
 Mattias Wadman13 янв. 2011 г., 18:48
Сообщите об этом яблоку сейчас. Обновлюсь, когда узнаю больше.
 Mattias Wadman02 февр. 2011 г., 13:10
Нет ответа от Apple еще
 Marcelo Cantos07 февр. 2011 г., 05:38
Попробуйте разные начальные значения:0.41 + ..., 0.3 + ..., Это может дать некоторое представление о том, что именно не так (это второй элемент, значение 0,5, ...?) Также попробуйте добавитьif (i != 1) continue как первая строкаif заявление, чтобы увидеть, если другие ползунки мешают среднему. Еще одна вещь приходит на ум в отношении угла «интерференции»: разделите их на 100 пикселей вместо 30.

Ответы на вопрос(1)

что другие контроллеры пользовательского интерфейса работают с 0,5 альфа, не должно быть никакой разницы сUISlider, так как они наследуютalpha свойство изUIView класс и есть ссылка наopaque свойство («Вы должны всегда устанавливать значение этого свойства в NO, если представление полностью или частично прозрачно»). Может быть, вы можете попытаться последовать совету.

Если на самом деле есть ошибка со значением 0,5, вы можете просто изменить начальную прозрачность с 0,4 до 0,41 / 0,39 без видимой разницы:

slider.alpha = 0.41f + (CGFloat)i / 10.0f;

Наконец, вы можете вывести результатalpha значения для некоторых меток, чтобы проверить, являются ли они ожидаемыми или вывести(CGFloat)i значение, чтобы увидеть, если что-то не так с приведением типа.

 Mattias Wadman07 февр. 2011 г., 22:46
slider.opaque = NO тоже не работает. Я также зарегистрировал альфа-значение с помощью NSLog (@ "% f", slider.alpha), и оно печатает 0,4, 0,5 и 0,6. В приложении, где есть эта ошибка, у меня есть только один ползунок, цикл был просто для иллюстрации проблемы. Спасибо за предложения.

Ваш ответ на вопрос