imageView的动画

时间:2015-03-18 08:59:02

标签: ios objective-c animation uiimageview

我有一个图像,我做了一个动画:

- (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];   
 }

并且我可以安装应用程序,但是如果我进入另一个屏幕然后返回第一个屏幕,动画就会停止。任何想法我怎么能修改它?

2 个答案:

答案 0 :(得分:0)

因为viewDidLoad被调用一次并且其中的代码被编译一次(告诉/建议我这里是否错了)。因此,要在返回视图时启动动画,您需要在viewWillAppear方法中调用动画代码。因此,每当您的视图出现时,viewWillAppear中的代码将再次编译。

段:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
}

答案 1 :(得分:0)

viewDidLoad:只被调用一次,即当视图加载到内存中时。

您需要在viewWillAppear:viewDidAppear:回调方法中实施该方法。