Подтвердить что ты не робот

UIView: непрозрачный против альфы против непрозрачности

Как opaque alpha и непрозрачность фона работают вместе для UIView и каковы различия между ними?

UIView http://i.minus.com/jb2IP8TXbYTxKr.png

4b9b3361

Ответ 1

opaque означает, что вы не рисуете что-либо внизу, даже если вы прозрачны.

Фоновая цветная альфа влияет только на прозрачность цвета фона, а не на рисовое изображение.

alpha влияет на все, нарисованные на представлении.


Свойство opaque может дать вам увеличение скорости - если вы знаете, что у вашего представления никогда не будет прозрачности, вы можете установить его на YES, и когда iOS отобразит ваше представление, оно может сделать некоторые оптимизации производительности и сделать их быстрее. Если для этого параметра установлено значение NO, iOS должен будет смешать ваше представление с представлением под ним, даже если оно не содержит прозрачности.

Альфа будет также влиять на альфу цветного фона, то есть если фоновый цвет будет 0,5 прозрачным, а альфа - 0,5, это приведет к тому, что фоновый просмотр будет альфа 0,25 (0,5 * 0,5).

Ответ 2

К очень хорошему answer от deanWombourne стоит добавить, что, если вы не нарисуете свой собственный контент с помощью метода drawRect: непрозрачное свойство не имеет эффект.

Apple doc:

Вам нужно только установить значение для непрозрачного свойства в подклассах UIView, что нарисовать собственный контент с помощью метода drawRect:. непрозрачное свойство не действует в системных классах, таких как UIButton, UILabel, UITableViewCell и т.д.

Если вы нарисуете свой собственный контент, имейте в виду, что непрозрачность - это всего лишь подсказка

Это свойство предоставляет подсказку системе рисования относительно того, как это сделать следует рассматривать точку зрения.

и еще несколько рекомендаций от того же документа Apple:

Если представление непрозрачно и либо не заполняет его границ, либо содержит полностью или частично прозрачный контент, результаты непредсказуемы. Вы всегда должны устанавливать значение этого свойства как НЕТ если представление полностью или частично прозрачно.