2013-05-25 2 views
0

Я работаю над индикатором прогресса, который имеет фон, который состоит из нескольких квадратов, нарисованных на разных уровнях в UIView. Я пытаюсь оживить эти квадраты, чтобы они исчезли в непрозрачности. Думайте о цифровых квадратах, например, когда ваш кабель находится на fritz, но исчезает и исчезает.Анимация блоков без поедания памяти в Objective-c

Есть ли лучший способ затем с помощью CAAnimations и настройки каждого CALayer непрозрачности как и где

innerImage.layer.opacity = randomNum; 

Я пытаюсь удержаться от использования на много памяти.

+0

хорошо, если что вы делаете, это слишком тяжело ... Вы можете попробовать реализовать «просто» это поведение, используйте наложения слоя .. возможно, разбить его на 10 дискретных уровней и кешировать объекты ... если это не работает, попробуйте в OpenGL ... –

+0

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

ответ

1

UIKit - это абстракция по Core Animation (которая имеет CALayer и CAAnimation). Таким образом, сравнение UIView, которая принадлежит UIKit, с CAAnimation, что имеет значение CoreAnimation, является немного ошибкой.

enter image description here

, не глядя на код его жестким, чтобы сказать об использовании памяти. Но это должно иметь мало или вообще не повлиять на память вашего приложения perf, если вы не делаете некоторые ошибки.

UIKit и CoreAnimation слои сильно зашифрованы. Поэтому, когда анимация будет визуализирована, инфраструктура будет повторно использовать кешированный вид, чтобы ускорить работу. Также все CoreAnimations запускаются на графическом процессоре с собственным регистром процессора и памяти. Индикатор выполнения должен быть легким для этой рамки. Я сделал намного более сложные вещи, и структура едва сломала пот. Надеюсь, что это помогает ...

Проверить это очень полезная ссылка - Designing for iOS Graphics Performance