iPhone: векторная анимация - PullRequest
       1

iPhone: векторная анимация

0 голосов
/ 19 ноября 2010

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

Я отображаю вид карты (хотя это может быть вид карты или что-то еще, может измениться,и я надеюсь, что это несущественно), и в верхней части представления карты у меня есть прозрачный подкласс представления.В этом представлении drawRect: метод я рисую на представлении, используя основные графические вызовы;круги, градиенты и т. д. То, что я рисую, не очень сложно, но не тривиально.Затем у меня есть NSTimer, который срабатывает каждые X секунд, вызывая [myview setNeedsDisplay] каждый раз, и то, что он рисует, меняется на каждом временном шаге (круги становятся больше, цвета и градиенты меняются, и т. Д.).

Является ли это правильным способом сделать этот тип векторной анимации?Я получаю очень низкую производительность X, кажется, не лучше, чем около 0,25.Я хотел бы 0,05 или меньше.Есть ли другой способ сделать что-то?У меня такое ощущение, что я либо стратегически отстранен, либо это бесполезно.Я могу делать что-то с CoreAnimation - например, увеличивать и уменьшать изображения и тому подобное, и это очень быстро (почему?), Но оно не дает мне нужный мне контроль ...

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: уменьшение количества рисунковСложность (меньшее количество кругов, градиентов и т. д.) значительно ускоряет рисование, но мне нужно почти ничего не рисовать, чтобы получить плавную анимацию.Является ли эта стратегия NSTimer правильным выбором?Есть ли другой способ сделать анимацию векторного рисования?

1 Ответ

0 голосов
/ 20 ноября 2010

Возможно ли, что вы могли бы использовать некоторую базовую анимацию для выполнения некоторых / всех анимаций? Например, вместо того, чтобы перерисовывать круг, размер которого меняется, просто визуализировать его как один размер и анимировать масштабное преобразование на нем? Если у вас есть только несколько объектов анимации, вы можете попробовать добавить каждый из них в качестве подслоя вашего представления, а затем объединить вместе некоторые анимации Core Animation вместо попытки перерисовать все вручную. Если вы посмотрите на синие круги в приложении Apple Maps, когда они излучают наружу (при получении исправления), вы можете увидеть, что они начинают резкими и становятся немного размытыми, а затем растут. Это прекрасно работает для этой цели, и я подозреваю, что они просто масштабируют маленькое круглое изображение. Будет ли такая вещь работать для вашего приложения?

Трудно сказать, что может улучшить производительность без лучшего представления о том, какую анимацию вы выполняете. Вы могли бы это уточнить?

(я бы написал это как комментарий, но я просто стесняюсь необходимой репутации для этого)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...