Как opaque
alpha
и непрозрачность фона работают вместе для UIView и каковы различия между ними?
UIView: непрозрачный против альфы против непрозрачности
Ответ 1
opaque
означает, что вы не рисуете что-либо внизу, даже если вы прозрачны.
Фоновая цветная альфа влияет только на прозрачность цвета фона, а не на рисовое изображение.
alpha
влияет на все, нарисованные на представлении.
Свойство opaque может дать вам увеличение скорости - если вы знаете, что у вашего представления никогда не будет прозрачности, вы можете установить его на YES
, и когда iOS отобразит ваше представление, оно может сделать некоторые оптимизации производительности и сделать их быстрее. Если для этого параметра установлено значение NO
, iOS должен будет смешать ваше представление с представлением под ним, даже если оно не содержит прозрачности.
Альфа будет также влиять на альфу цветного фона, то есть если фоновый цвет будет 0,5 прозрачным, а альфа - 0,5, это приведет к тому, что фоновый просмотр будет альфа 0,25 (0,5 * 0,5).
Ответ 2
К очень хорошему answer от deanWombourne стоит добавить, что, если вы не нарисуете свой собственный контент с помощью метода drawRect: непрозрачное свойство не имеет эффект.
Вам нужно только установить значение для непрозрачного свойства в подклассах UIView, что нарисовать собственный контент с помощью метода drawRect:. непрозрачное свойство не действует в системных классах, таких как UIButton, UILabel, UITableViewCell и т.д.
Если вы нарисуете свой собственный контент, имейте в виду, что непрозрачность - это всего лишь подсказка
Это свойство предоставляет подсказку системе рисования относительно того, как это сделать следует рассматривать точку зрения.
и еще несколько рекомендаций от того же документа Apple:
Если представление непрозрачно и либо не заполняет его границ, либо содержит полностью или частично прозрачный контент, результаты непредсказуемы. Вы всегда должны устанавливать значение этого свойства как НЕТ если представление полностью или частично прозрачно.