在iOS 9中界面旋转ENDED时回调?

时间:2015-10-25 21:30:58

标签: uiview uiviewcontroller ios9 uiinterfaceorientation transitions

我还没有看到这个问题的明确答案,iOS 8周围的大量噪音发生了变化,但我想为iOS 9解决这个问题:

界面方向更改ENDS后获取回调的正确方法是什么?

自iOS 9起,didRotateFromInterfaceOrientation:已被弃用,官方文档告诉我们使用viewWillTransitionToSize:withTransitionCoordinator代替。这为我们(通过transitionCoordinator)提供了一种在转换和完成块旁边动画的方法,但没有直接回调过渡的真正“结束”。

transitionCoordinator中的另一种方法是notifyWhenInteractionEndsUsingBlock:,但这似乎报告了过渡的交互部分的结束,而不是整个过程。

那么,这是实现animateAlongsideTransition:completion的“官方”方式,而忽略了动画选项吗?

我意识到我们仍然可以使用好的didRotateFromInterfaceOrientation:,但在可能的情况下进行现代化总是更好。

1 个答案:

答案 0 :(得分:4)

是的,你可以忽略动画选项,只需使用' nil'为了它。

WWDC 2014中的示例'在iOS 8中查看控制器进度':

- (void) viewWillTransitionToSize:(CGSize)s withTransitionCoordinator:(UIVCTC)t
{
    orientation = [self orientationFromTransform: [t targetTransform]];
    oldOrientation = [[UIApplication sharedApplication] statusBarOrientation];

    [self myWillRotateToInterfaceOrientation:orientation duration:duration];

    [t animateAlongsideTransition:^(id <UIVCTCContext>) {
        [self myWillAnimateRotationToInterfaceOrientation:orientation duration:duration];
    } 
    completion: ^(id <UIVCTCContext>) {
        [self myDidAnimateFromInterfaceOrientation:oldOrientation];
    }];
}

适用于iOS 9。