Uiview 在iOS 9中接口旋转结束时回调?

Uiview 在iOS 9中接口旋转结束时回调?,uiview,uiviewcontroller,ios9,uiinterfaceorientation,transitions,Uiview,Uiviewcontroller,Ios9,Uiinterfaceorientation,Transitions,我还没有看到这个问题的明确答案,iOS 8的变化带来了很多噪音,但我想针对iOS 9解决这个问题: 在接口方向更改结束后,获取回调的正确方法是什么? 从iOS 9开始,didRotateFromInterfaceOrientation:已被弃用,官方文档告诉我们改用ViewWillTransitionOnSize:WithTransitionOrdinator。这为我们(通过transitionCoordinator)提供了一种沿过渡设置动画的方法,以及一个完成块,但没有直接回调过渡的真正“结束

我还没有看到这个问题的明确答案,iOS 8的变化带来了很多噪音,但我想针对iOS 9解决这个问题:

在接口方向更改结束后,获取回调的正确方法是什么?

从iOS 9开始,
didRotateFromInterfaceOrientation:
已被弃用,官方文档告诉我们改用
ViewWillTransitionOnSize:WithTransitionOrdinator
。这为我们(通过
transitionCoordinator
)提供了一种沿过渡设置动画的方法,以及一个完成块,但没有直接回调过渡的真正“结束”

transitionCoordinator
的另一个方法是
notifyWhenInteractionEndsUsingBlock:
,但它似乎报告了转换交互部分的结束,而不是整个过程

那么,这样做的“官方”方法是实现
animateAlongsideTransition:completion
,而忽略动画选项吗


我意识到我们仍然可以使用好的老式
didRotateFromInterfaceOrientation:
,但在可能的情况下,最好是现代化。

是的,您可以忽略动画选项,只需使用“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];
    }];
}
-(void)视图将传递大小:(CGSize)s和传递协调员:(UIVCTC)t
{
方向=[self-orientationFromTransform:[t targetTransform]];
oldOrientation=[[UIApplication sharedApplication]statusBarOrientation];
[自我意志旋转界面定向:定向持续时间:持续时间];
[t AnimateLongsideTransition:^(id){
[自我意志动画动作界面定向:定向持续时间:持续时间];
} 
完成日期:^(id){
[自我myDidAnimateFromInterfaceOrientation:oldOrientation];
}];
}
在iOS 9上运行良好