Установить “непрозрачность” CGLayer перед рисованием?
Вопрос
У меня есть подкласс UIView - фактически фрагмент головоломки - с 2 разными CGLayer, инициализированными в initWithFrame.
В drawRect я должен смешайте эти два слоя, и самый верхний должен иметь переменная альфа в зависимости от игровой логики.
Каков наилучший (наиболее оптимизированный по производительности) способ сделать это?Есть ли какая-нибудь функция CGLayer или CGContext, которая устанавливает некоторую альфа-версию перед рисованием?
Решение
Установите -opacity
слоя.Помните, что слой -opaque
настройка должна быть NO.Значение по умолчанию равно "НЕТ", но обычно для него устанавливается значение "ДА" по соображениям производительности.
Если вы уже делаете -drawInContext:
, тогда вы можете поэкспериментировать с CGContextSetAlpha()
.Однако, как правило, вы не используете -drawRect:
и слои одновременно.Обычно вы позволяете либо виду, либо слоям выполнять рисование.