Должно ли Rasterize на CALayer вызывать растеризацию до или после преобразования слоя? - PullRequest
9 голосов
/ 02 февраля 2012

Я пытаюсь оптимизировать свое приложение. Он довольно богатый визуально, поэтому имеет довольно много слоистых UIViews с большими изображениями и смешиванием и т.д.

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

Содержимое UIView остается статичным, поэтому я подумал, что имеет смысл установить view.layer.shouldRasterize = YES. Однако я не увидел увеличения производительности. Может ли быть так, что он повторно растеризует каждый кадр с новым масштабом и вращением? Я надеялся, что он растеризуется в начале, когда у него есть матрица преобразования идентификаторов, а затем кеширует ее, когда она масштабируется и вращается во время перехода?

Если нет, могу ли я заставить это случиться? За исключением добавления избыточного дополнительного суперпредставления / слоя, который делает только масштабирование и вращение растеризованного содержимого ...

1 Ответ

8 голосов
/ 14 февраля 2012

Вы можете ответить на свой вопрос, профилировав свое приложение с помощью инструмента CoreAnimation . Обратите внимание, что эта функция доступна только на устройстве.

Вы можете включить «Цветовые попадания в зеленый и пропускающий красный». Если ваш слой остается красным, это означает, что он действительно растеризует его каждый кадр.

...