Что за магия стоит за CAReplicatorLayer?
Что я нахожу интересным с CAReplicatorLayer:
- Он может отображать CALayer несколько раз с различными преобразованиями очень эффективно (как?)
- Кажется, что он каким-то образом использует "резервное хранилище" для реплицированного слоя и даже применяет к нему некоторые цветовые оттенки (как?)
Я хотел бы получить либо исходный код, либо получить представление о магии, стоящей за CAReplicatorLayer. Я хотел бы иметь класс CALayer, похожий на CAReplicatorLayer, но с большим контролем. Я хотел бы иметь контроль над преобразованием индивидуально для каждого реплицированного экземпляра.
Так что спросили совершенно по-другому: возможно ли получить "резервное хранилище" для CALayer и отобразить его так, как я хочу столько раз, сколько захочу?
(Под "резервным хранилищем" я подразумеваю визуализированную текстуру для CALayer/UIView. Я не знаю много о том, что происходит под капотами CoreAnimation/QuartzCore).
Почему я не смотрю на альтернативы, такие как, например, рендеринг CALayer в UIImage:
- Спектакль
- Контент динамический / меняется довольно часто при переходах
- Было бы здорово сделать это по-другому!
1 ответ
Специальные CALayers, такие как CAReplicatorLayer или CAGradientLayer, могут (через частные API) выполнять рисование непосредственно на GPU, используя быстрое заполнение или копирование. В некотором смысле они отличаются тем, что резервное хранилище находится не в обычном ОЗУ, а непосредственно в графическом процессоре.