更改VIewControllers会停止动画

时间:2012-04-21 01:04:42

标签: iphone objective-c ios animation

我在tabbarviewcontroller的第一个视图控制器上有这个动画

- (void)viewDidAppear:(BOOL)animated
{
    [UIView animateWithDuration:4.0 delay:0.0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear animations:^{
        CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);
        self.rotatingImage.transform = transform;
    } completion:NULL];
}

它工作得很好但是当我从tabbar更改viewcontroller并返回到第一个viewcontroller动画时停止。

有一个类似的帖子iOS UIView Animation Issue,但没有任何解释

2 个答案:

答案 0 :(得分:5)

试试这个:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    self.rotatingImage.transform = CGAffineTransformIdentity;
    [UIView animateWithDuration:4.0 delay:0.0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear animations:^{
        CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);
        self.rotatingImage.transform = transform;
    } completion:NULL];
}

解释很简单......当动画代码再次被触发时,UIImageView的变换已经等于动画的最终变换。这类似于将UIImageView的alpha设置为1.0到1.0的动画 - 没有任何变化。

答案 1 :(得分:1)

使用以下代码并享受......

self.animationyourImageView.transform = CGAffineTransformIdentity;

它会重置您的转换......

希望,这会对你有帮助..