UISlider игнорирует альфа при установке на 0,5
Почему представление 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];
}
Результат:
![Example screenshot]()
Ползунки имеют значения альфа 0,4, 0,5 и 0,6. И как вы можете видеть, средний с 0.5 полностью непрозрачен. Это происходит только при альфа-0,5. Были протестированы другие контроллеры пользовательского интерфейса, и они работают так, как ожидалось, с альфой установлено на 0,5.
Воспроизводится с iOS 4.2 на реальном устройстве и с iOS 3.2 и 4.2 в симуляторе.
Кстати, если кому-то интересно, как и почему я ударил эту проблему, это скользящая конфигурация площадки для головоломки, названная Slippy.
Ответы
Ответ 1
Как вы сказали, другие контроллеры пользовательского интерфейса работают с 0,5 альфа, не должно быть разницы с UISlider
, поскольку они наследуют alpha
свойство from UIView
и ссылается на свойство opaque
( "Вы должны всегда устанавливать значение этого свойства как НЕТ, если вид полностью или частично прозрачен" ). Возможно, вы можете попытаться следовать советам.
Если на самом деле есть ошибка с 0,5 значением, вы можете просто изменить начальную прозрачность от 0,4 до 0,41/0,39 без видимой разницы:
slider.alpha = 0.41f + (CGFloat)i / 10.0f;
Наконец, вы можете вывести полученные значения alpha
на некоторые метки, чтобы проверить, являются ли они ожидаемыми, или вывести значение (CGFloat)i
, чтобы увидеть, что что-то не так с литьем типов.