UISlider игнорирует альфа, когда установлено на 0,5 - PullRequest
10 голосов
/ 13 января 2011

Почему представление 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 Ответ

1 голос
/ 07 февраля 2011

Как вы сказали, что другие контроллеры пользовательского интерфейса работают с альфа-версией 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, чтобы увидеть, если что-то не так с приведением типа.

...