如何在iOS 7上为设备旋转设置动画

时间:2015-05-19 01:25:49

标签: animation ios7 ios8 rotation

我想在设备旋转的同时做一些动画。在iOS 8上,我可以这样做:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        // My custom animation
    } completion:nil];
}

但这种方法在iOS 7上不可用。我尝试做类似的事情如下:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

    [self.transitionCoordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        // Custom animations
    } completion:nil];
}

但是self.transitionCoordinator对象在这里是零。有谁知道如何在iOS 7上实现相同的效果?

我不确定我是否只是在错误的地方调用这个animateAlsidesideTransition方法,或者即使animateAlongsideTransition是正确的调用方法。所以任何帮助/指导都将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

看起来我找到了自己问题的答案。对于那些也想知道同样事情的人来说, willAnimateRotationToInterfaceOrientation 方法是一个可以使用的方法。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];

    [UIView animateWithDuration:duration animations:^{
        // Custom animations
    }];
}

看起来自定义动画必须在这里。如果我将动画块移动到willRotateToInterfaceOrientation方法,它将无法工作。