视图更改后动画不会重新启动

时间:2013-01-21 16:58:16

标签: iphone ios objective-c

第一次加载视图时会应用动画但是在加载视图之后 - 没有任何反应。

应该是直截了当的 - 但是......

代码:

- (void)viewDidAppear:(BOOL)animated{    
[self animateLabel];    
}

- (void)viewWillDisappear:(BOOL)animated{
[self.labelMarkTheSpot.layer removeAllAnimations];  
}

- (void)animateLabel{

UIViewAnimationOptions options = (UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionBeginFromCurrentState);

CGAffineTransform scaleFactor = CGAffineTransformMakeScale(1.1, 1.1);
[UIView animateWithDuration:0.2 delay:0 options:options animations:^{
    self.labelMarkTheSpot.transform = scaleFactor;        
}
completion:nil];
}

(在viewWillAppear中启动动画没有区别)

1 个答案:

答案 0 :(得分:3)

animateLabel的开头添加一行,将视图重置为动画前的比例:

self.labelMarkTheSpot.transform = CGAffineTransformMakeScale(1.0, 1.0);

一旦它动画为1.1,1.1,会发生什么?它保持这种状态,当视图重新出现时的动画不会做任何事情(1.1到1.1)。通过将其重置为1.0(或者您最初想要的任何内容,作为动画的起点),它将始终从1.0变为1.1。