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