Анимация на iPhone - использовать последовательность изображений или вращение? - PullRequest
1 голос
/ 04 мая 2010

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

NSArray *myImages = [NSArray arrayWithObjects: 
[UIImage imageNamed:@"myImage1.png"], 
[UIImage imageNamed:@"myImage2.png"], 
[UIImage imageNamed:@"myImage3.png"], 
[UIImage imageNamed:@"myImage4.gif"], nil]; 

UIImageView *myAnimatedView = [UIImageView alloc]; 
[myAnimatedView initWithFrame:[self bounds]]; 
myAnimatedView.animationImages = myImages; 
myAnimatedView.animationDuration = 0.25;  
[self addSubview:myAnimatedView]; 
[myAnimatedView release];

или как-то так ...

    [UIView beginAnimations:nil context:NULL];
 [UIView setAnimationDuration:1.5];
 // other animations goes here
 myImage.transform = CGAffineTransformMakeRotation(M_PI*0.5);
 // other animations goes here
 [UIView commitAnimations];

У меня есть довольно много этих частей для анимации, поэтому я хочу выбрать вариант, который использует наименьший объем памяти и ускоряет работу. Любой совет был бы отличным, спасибо

Ответы [ 3 ]

0 голосов
/ 04 мая 2010

Я бы стал гибридом: генерируйте ваши неподвижные изображения из кода анимации и сохраняйте слой в CGImages.

0 голосов
/ 18 июня 2013

Итак, коренная проблема, которую вы должны рассмотреть, это то, сколько кадров анимации вы ожидаете в памяти за один раз. Неважно, используете ли вы animationImagesArray или одно огромное изображение со всеми кадрами в одном. Хранение данных декодированного изображения в памяти занимает много места, вы можете избежать неприятностей с небольшим количеством маленьких изображений, но вы можете легко написать некоторый код, который может вызвать сбой вашего устройства из-за использования всей памяти , См. Мой пост в блоге об этой конкретной проблеме video-and-memory-use-on-ios-devices . Лучший способ написать свой код - просто не хранить все декодированные кадры видео (UIImages или CGImageRefs) в памяти одновременно.

0 голосов
/ 04 мая 2010

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

...