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

How to animate along with device rotation on iOS 7

我想在设备旋转的同时制作一些动画。在 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 对象在这里是 nil。有谁知道如何在 iOS 7 上实现相同的效果?

我不确定我是否只是在错误的地方调用了这个 animateAlongsideTransition 方法,或者即使 animateAlongsideTransition 是正确的调用方法。所以任何 help/guidance 将不胜感激。

谢谢

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

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

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

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