UIView: непрозрачный против альфа против непрозрачности - PullRequest
54 голосов
/ 15 декабря 2011

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

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

Ответы [ 2 ]

125 голосов
/ 15 декабря 2011

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

Альфа-версия цвета фона влияет только на прозрачность цвета фона, а не на что-либо еще нарисованное на виде..

alpha влияет на все, что рисуется на виде.


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

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

8 голосов
/ 02 декабря 2016

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

Документ Apple :

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

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

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

и некоторые другие рекомендации из того же документа Apple:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...