2015-01-06 2 views
1

Есть ли способ программно облегчить эту анимацию, помимо ручной настройки PNG в программном обеспечении для редактирования изображений? т.е.: Показать эффект easeOut. Я смотрел и не видел ответа в Интернете, если я не использую неправильные ключевые слова для поиска ответа.Programmatically easeOut UIImageView animationImages

NSMutableArray * images = [@[] mutableCopy]; 

for (int i = currentFrame; i <= maxFrame; i++) { 

    NSString * imageString = [NSString stringWithFormat:@"icon_introchart_%ld",i]; 
    UIImage * newImage = [UIImage imageNamed:imageString]; 
    [images addObject:newImage]; 

} 

_introChart.animationImages = images; 
_introChart.animationDuration = 2.0f; 
_introChart.animationRepeatCount = 1; 

EDITED -> но я все еще не хватает кое-что:

CAKeyframeAnimation * animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"]; 
[animation setCalculationMode:kCAAnimationLinear]; 
animation.duration = 2.0; 
animation.values = images; 
animation.repeatCount = 1; 
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
[animation setRemovedOnCompletion:YES]; 
[_introChart.layer addAnimation:animation forKey:@"contents"]; 

// _introChart.animationImages = images; 
// _introChart.animationDuration = 2.0f; 
//_introChart.animationRepeatCount = 1; 

EDIT: мне нужно поставить CGImageRefs вместо UIImages для "содержания" ... он работает в настоящее время.

UIImage * newImage = [UIImage imageNamed:imageString]; 
CGImageRef cgImage = [newImage CGImage]; 
[images addObject:(__bridge id)(cgImage)]; 
+0

Если бы у меня был никель на каждый раз, когда я забыл взять CGImage UIImage при настройке содержимого слоя ...! :) Проблема, конечно же, в том, что не существует ошибки времени компиляции или времени выполнения, но ничего на самом деле не происходит. – matt

ответ

1

Простая анимация UIImage - это просто. Вы, конечно же, можете делать то, что хотите, но вам нужно будет использовать настоящую анимацию, чтобы получить тот контроль времени, о котором вы просите. Самый простой способ - это, вероятно, использовать CAKeyframeAnimation, который дает вам контроль над временем «кадров» анимации.

+0

Спасибо, матовый, я знал, что должно быть что-то, и я, вероятно, не использовал правильные слова поиска. Я проверю и отправлю отчет :) – Silverstar

+0

Работает сейчас! Спасибо, что указали мне в правильном направлении матовый! – Silverstar

Смежные вопросы