iOS9界面轮换ENDED时回调?

Callback when interface rotation ENDED in iOS 9?

我还没有看到这个问题的明确答案,围绕 iOS 8 的变化有很多噪音,但我想在 iOS 9 中解决它:

界面方向改变ENDS后回调的正确方式是什么?

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

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

那么,执行此操作的“官方”方式是实现 animateAlongsideTransition:completion 并简单地忽略动画选项吗?

我知道我们仍然可以使用旧的 didRotateFromInterfaceOrientation:,但尽可能现代化总是更好。

是的,您可以忽略动画选项,只需使用 'nil' 即可。

WWDC 2014 示例'View Controller Advancements in 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];
    }];
}

适用于 iOS9.