我有一个图像,我做了一个动画:
- (void) spinWithOptions: (UIViewAnimationOptions) options {
// this spin completes 360 degrees every 2 seconds
//Spin rotate image
[UIView animateWithDuration: 5.5f
delay: 0.0f
options: options
animations: ^{
self.rotateImage.transform = CGAffineTransformRotate(self.rotateImage.transform, M_PI / 2);
}
completion: ^(BOOL finished) {
if (finished) {
if (animating) {
// if flag still set, keep spinning with constant speed
[self spinWithOptions: UIViewAnimationOptionCurveLinear];
} else if (options != UIViewAnimationOptionCurveEaseOut) {
// one last spin, with deceleration
[self spinWithOptions: UIViewAnimationOptionCurveEaseOut];
}
}
}];
}
和我的viewDidLoad
- (void)viewDidLoad {
[super viewDidLoad];
[self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
}
并且我可以安装应用程序,但是如果我进入另一个屏幕然后返回第一个屏幕,动画就会停止。任何想法我怎么能修改它?
答案 0 :(得分:0)
因为viewDidLoad
被调用一次并且其中的代码被编译一次(告诉/建议我这里是否错了)。因此,要在返回视图时启动动画,您需要在viewWillAppear
方法中调用动画代码。因此,每当您的视图出现时,viewWillAppear
中的代码将再次编译。
段:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
}
答案 1 :(得分:0)
viewDidLoad:
只被调用一次,即当视图加载到内存中时。
您需要在viewWillAppear:
或viewDidAppear:
回调方法中实施该方法。