imageView 的动画
Animation for imageView
我有一张图片,我制作了一个动画:
- (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];
}
}
}];
}
在我看来DidLoad
- (void)viewDidLoad {
[super viewDidLoad];
[self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
}
我启动应用程序没问题,但如果我进入另一个屏幕然后返回第一个屏幕,动画就会停止。知道我该如何修改吗?
因为viewDidLoad
调用了一次,里面的代码编译了一次(tell/suggest我这里说错了)。因此,要在返回视图时启动动画,您需要在 viewWillAppear
方法中调用动画代码。因此,每次您的视图出现时,viewWillAppear
中的代码将再次编译。
片段:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
}
viewDidLoad:
仅调用一次,即当视图加载到内存中时。
您需要在 viewWillAppear:
或 viewDidAppear:
回调方法中实现该方法。
我有一张图片,我制作了一个动画:
- (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];
}
}
}];
}
在我看来DidLoad
- (void)viewDidLoad {
[super viewDidLoad];
[self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
}
我启动应用程序没问题,但如果我进入另一个屏幕然后返回第一个屏幕,动画就会停止。知道我该如何修改吗?
因为viewDidLoad
调用了一次,里面的代码编译了一次(tell/suggest我这里说错了)。因此,要在返回视图时启动动画,您需要在 viewWillAppear
方法中调用动画代码。因此,每次您的视图出现时,viewWillAppear
中的代码将再次编译。
片段:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
}
viewDidLoad:
仅调用一次,即当视图加载到内存中时。
您需要在 viewWillAppear:
或 viewDidAppear:
回调方法中实现该方法。