Uiview 在iOS 9中接口旋转结束时回调?
我还没有看到这个问题的明确答案,iOS 8的变化带来了很多噪音,但我想针对iOS 9解决这个问题: 在接口方向更改结束后,获取回调的正确方法是什么? 从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)提供了一种沿过渡设置动画的方法,以及一个完成块,但没有直接回调过渡的真正“结束
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上运行良好