Проблемы с производительностью при масштабировании нескольких CALayers - PullRequest
0 голосов
/ 09 мая 2009

У меня есть два подкласса CALayer, каждый из которых имеет свой собственный слой drawLayer: (CALayer *) inContext: (CGContextRef) делегат ctx. Они оба являются простыми слоями (некоторые одноцветные фигуры, нарисованные с помощью CG-путей), но мне нужно масштабировать до 12 экземпляров одновременно, и у меня возникают некоторые проблемы с частотой кадров. Я пометил все слои как непрозрачные, чтобы попытаться освободить некоторые циклы, и попытался использовать неявные и явные базовые анимации (на самом свойстве bounds), а также назначить матрицы CA3DTransform свойству transform.

Кто-нибудь знает хороший способ быстрого изменения размера объектов при сохранении хорошей частоты кадров?

Ответы [ 2 ]

1 голос
/ 09 мая 2009

Это не похоже на возможности iPhone.

Одним из решений может быть рендеринг их в изображение и масштабирование этого? Это (более или менее) то, что будет делать CoreAnimation. Похоже, что у вас есть дефект - возможно, вам следует опубликовать свой код, и люди могли бы посмотреть на него.

Где вы выполняете перерисовку и что перерисовываете?

0 голосов
/ 10 мая 2009

Я согласен с Роджером.

Проверьте, как часто вызываются ваши drawLayer:inContext: методы (или что вы используете для рисования). Простой NSLog может сделать это. Если их вызывают постоянно, рассмотрите идею Роджера о рендеринге изображения и его масштабировании.

Вам, вероятно, придется запустить инструменты повышения производительности, чтобы найти узкое место.

...