Ответ 1
Настройка shouldRasterize
не делает то, о чем вы думаете. Чтобы сформировать внешний вид родительского представления, растрированный или нет, он должен проверить subviews, чтобы увидеть, являются ли они opaque
или прозрачными. Когда дочерние объекты opaque
, их не нужно смешивать. Когда они прозрачны, представление необходимо смешивать с тем, что стоит за ними (или выше в иерархии).
Итак, shouldRasterize
не повлияет на зеленый/красный цвет, который вы видите с помощью инструментов. Чтобы все было зеленым, вам не нужно использовать прозрачность и иметь все дочерние объекты opaque
. Иногда его неизбежно иметь красные области в зависимости от вашего дизайна. Инструмент находится там, чтобы помочь вам оптимизировать те, которые могут быть opaque
, и уменьшить количество смешивания графического процессора.
Изменить:
Чтобы объяснить далее, предположим, что у вас есть UILabel
и его сидение поверх фотографии. Вы хотите видеть только текст, а не цвет фона, поэтому установите backgroundColor
для очистки, а свойство opaque
- НЕТ. В инструментах это теперь будет красным. Графический процессор должен сочетать эту прозрачность с изображением, расположенным за ним, выполняя две операции рисования вместо одного.
Если бы мы установили opaque
в YES
и дали ему сплошной цвет фона, представление теперь будет отображаться зеленым в инструментах, потому что ему не нужно смешивать этот вид с любым другим видом.
Итак, независимо от того, растеризуется ли этот слой или нет, он все равно должен комбинировать свои дочерние представления, поэтому shouldRasterize
действительно не имеет никакого эффекта в том, что вы видите в Инструментах.