У меня есть несколько хороших пользовательских UIViews, которые используют CALayers для некоторых довольно сложных масок и прозрачных пленок.Мне потребовалось некоторое время, чтобы выяснить, как заставить его работать гладко, но я обнаружил, что, оборачивая соответствующие объекты в контейнер UIView и устанавливая значение параметра layer.shouldRasterize контейнера в YES, но оставляя этому свойству всех содержащихся представлений значение NO., он будет работать плавно, независимо от того, насколько сложным может быть ваше смешивание.
Это в основном так:
UIScrollView
Просмотр контейнера (layer.shouldRasterize = YES)
- child (layer.shouldRasterize = NO)
- childOfChild (layer.shouldRasterize = NO)
- child (layer.shouldRasterize =NO)
- child (layer.shouldRasterize = NO)
Container ...
Container ... (и т. Д.)
По сути, контейнер растеряется как одно большое изображение блока при растеризации, сводя к минимуму количество растеризации, которое необходимо выполнить.Тем не менее, это создало новую проблему для меня.Если у меня есть несколько контейнеров в UIScrollView, как только один из контейнеров прокручивается за пределами экрана, он помечается как «Красный» в профилировщике CoreAnimation и, следовательно, должен снова отображаться при прокрутке назад на экране.Это вызывает краткое заикание.Я не понимаю, почему слой контейнера должен снова растеризоваться.Может кто-нибудь объяснить это или, возможно, предоставить обходной путь?Спасибо.