UIView непрозрачная собственность
opaque
свойство UIView по умолчанию всегда имеет значение "YES". Но ссылка на класс UIView гласит:
Ожидается, что непрозрачное представление заполнит свои границы полностью непрозрачным содержимым, то есть содержимое должно иметь альфа-значение 1,0. Если представление непрозрачно и либо не заполняет свои границы, либо содержит полностью или частично прозрачное содержимое, результаты непредсказуемы.
С изменением alpha
вида является довольно распространенным, особенно во время переходов или анимации, тогда приведенное выше утверждение подразумевает, что вы всегда должны устанавливать вручную opaque
в NO
если вы собираетесь изменить alpha
собственность также.
Но я никогда не настраивал вручную opaque
и не было никаких заметных симптомов. Насколько необходимо сделать это рассмотрение?
2 ответа
Ответ в том, что iOS достаточно умен, чтобы признать, что если ваш взгляд alpha
меньше 1, он должен рисовать контент позади вашего представления, независимо от вашего представления opaque
имущество.
В ответ на комментарии: из моих ограниченных экспериментов, я не думаю, что мнение opaque
собственность имеет какое-либо влияние. (Я думаю, что документация неверна.) Слой вида opaque
свойство имеет эффект: оно контролирует, CGContext
перешел к drawRect:
имеет альфа-канал. Если слой opaque
свойство YES, контекст не имеет альфа-канала (и обрабатывается так, как будто каждый пиксель имеет альфа-канал 1,0).
Изменение вида opaque
свойство не влияет на слой opaque
имущество. Это отличается от (например) представления alpha
свойство, которое является просто оболочкой для слоя opacity
имущество.
Теоретически, документально opaque
Свойство позволяет им оптимизировать рисование, Apple может реализовать эту оптимизацию в будущем. На практике это может привести к поломке многих приложений, поэтому они, вероятно, не сделают такое изменение применимым к приложениям, связанным с более старыми SDK. (У них есть возможность заставить UIKit вести себя по-разному в зависимости от того, с какой версией было связано приложение.)
Пока у самого содержимого представления (а не его подпредставлений) нет альфы, у вас все в порядке. Так что, если вы инициируете UIImageViews с изображением PNG с альфа, opaque
будет установлен в NO
автоматически.
Обычно вам не нужно много непрозрачных видов. Но альфа полного представления в любом случае иная.