animateWithDuration iOS 7持续时间不起作用

时间:2014-05-18 22:10:19

标签: ios objective-c uianimation

我试图在动画期间动画UIImageView来更改UIImage,但方法中的持续时间不起作用,动画立即完成,为什么? 这是代码:

- (IBAction)do_action:(id)sender {
     [UIView animateWithDuration:3.0 animations:^{
         [self.my_image setImage:[UIImage imageNamed:@"image1"]];
     } completion:^(BOOL finished) {
         [self.my_image setImage:[UIImage imageNamed:@"image2"]];
     }];
}

我已经为动画持续时间插入了3秒,但是不起作用,立即行动,我该怎么办?

2 个答案:

答案 0 :(得分:0)

SetImage不是可动画的行为。 更容易实现的方法是使用UIImageView的setAnimationImages属性

//set Your Image names as array
[self.imageView setAnimationImages:[NSArray arrayWithObjects:@"IMG_1_Name",@"IMG_2_Name",nil]];

[self.imageView setAnimationRepeatCount:1];
[self.imageView setAnimationDuration:0.5]; //Your total cycle time. here 0.25 sec for each image
[self.imageView startAnimating];

答案 1 :(得分:0)

试试这个:

self.my_image.image = [UIImage imageNamed:@"image1"];

CATransition *transition = [CATransition animation];
transition.duration = 1.0f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;

[self.my_image.layer addAnimation:transition forKey:nil];

要设置第二个图像,您需要实现一个委托,以便在动画完成时收到有关该事件的通知。

CATransition有一个委托方法animationDidStop:finished:,您可以使用它。 设置委托属性并实现方法:

transition.delegate = self;

...

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
     [self.my_image setImage:[UIImage imageNamed:@"image2"]];
}