Когда я должен установить layer.shouldRasterize в YES

Я видел исправления для некоторых проблем с задержкой, установив свойство слоя в представлении

view.layer.shouldRasterize = YES;

Я видел большую разницу в производительности при использовании UICollectionView и подготовке ячеек и настройке свойств.

Не уверен, что это за последствия.

Было бы здорово получить объяснение. Спасибо!

Ответ 1

В WWDC 2012 Полировка поворота интерфейса видео (требуется платная подписка разработчиков), они говорят о преимуществах и последствиях растеризующих слоев. Это видео по-разному (интересное, хотя), но они говорят о плюсах и минусах растеризации и моментальных снимков (начиная примерно через 8 минут в видео они дают некоторый фон об отношениях между иерархией UIView дерево представления и дерево рендеринга, а затем погрузитесь в обсуждение растеризации еще на 6 минут в видео).

В нижней строке, если у вас есть сложный вид (то есть относительно дорогой для повторной визуализации), который вы анимации, но для которого анимированное представление не изменяется, растрирование слоя может улучшить производительность, не перерисовывая слой все время. Но он делает это за счет памяти (сохранение растрированного изображения в памяти).

Но если вы изменяете изменение внутри слоя, shouldRasterize может отрицательно повлиять на производительность (потому что он собирается повторно растрировать слой для каждого кадра анимации).

Как правило, если анимация сложного набора слоев, которые сами по себе не изменяются, вы можете установить shouldRasterize в YES, сделать анимацию, а затем отключить shouldRasterize.