В настоящее время я пытаюсь создать эффект Кена Бернса на UIImageView.Сначала он должен увеличивать масштаб (медленно), а после этого didStopSelector объекта Animation должен вызывать метод, который должен уменьшать масштаб.Проблема в том, что первая анимация (увеличение) в порядке и работает отлично, пока я не добавляю didStopSelector к анимации.Если я делаю это, кажется, что метод вызывается напрямую (не после того, как он сделал Stop).
Вот 2 метода, которые включают анимацию:
- (void)beginKenBurnsEffect {
[UIView beginAnimations:@"a" context:self.view_image];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:5];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDidStopSelector:@selector(endKenBurnsEffect)];
[UIView setAnimationDelegate:self];
self.view_image.transform = CGAffineTransformScale(self.view_image.transform, 1.06, 1.06);
self.view_image.center = CGPointMake(self.frame.size.width/1.7, self.frame.size.height/2);
[UIView commitAnimations];
}
- (void)endKenBurnsEffect {
[UIView beginAnimations:@"b" context:self.view_image];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:5];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDidStopSelector:@selector(beginKenBurnsEffect)];
[UIView setAnimationDelegate:self];
self.view_image.transform = self.origTransform;
self.view_image.center = self.origPoint;
[UIView commitAnimations];
}
После того, как я инициализировал UIImageViewЯ сохраняю текущие значения Transform и Center в свойстве.
self.origTransform = self.view_image.transform;
self.origPoint = self.view_image.center;
Я также попробовал сделать это только с одной анимацией и setAnimationAutoReverse, но после завершения анимации она увеличивается без анимации (после медленного анимации с уменьшением).
Может быть, у вас есть идея, в чем может быть проблема.
Заранее спасибо:)