Какая магия за CAReplicatorLayer? - программирование
Подтвердить что ты не робот

Какая магия за CAReplicatorLayer?

Что я нахожу интересным с CAReplicatorLayer:

  • Он способен отображать CALayer несколько раз с различными преобразованиями очень эффективно (как?)
  • Кажется, что он каким-то образом повторно использует "резервное хранилище" для реплицированного слоя и даже применяет к нему некоторые цветовые оттенки (как?)

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

Так спрашивается совершенно по-другому: возможно ли получить "резервное хранилище" для CALayer и отобразить его, но я хочу столько раз, сколько захочу?

(через "backing store" я имею в виду визуализированную текстуру для CALayer/UIView. Я мало знаю о том, что происходит под капотами CoreAnimation/QuartzCore).


Почему я не смотрю на альтернативы, например, например? превращение CALayer в UIImage:

  • Производительность
  • Контент динамически изменяется/изменяется довольно часто при переходах
  • Было бы неплохо сделать это другим путем!
4b9b3361

Ответ 1

Специальные CALayers, такие как CAReplicatorLayer или CAGradientLayer, могут (через частные API) выполнять свой чертеж непосредственно на графическом процессоре, используя быстрое заполнение или копирование. В некотором смысле они различны, так что хранилище резервных копий не находится в нормальной ОЗУ, а непосредственно на графическом процессоре.