我还没有看到这个问题的明确答案,关于 iOS 8 变化的声音很多,但我想针对 iOS 9 解决这个问题:
在界面方向更改结束后获得回调的正确方法是什么?
从 iOS 9 开始,didRotateFromInterfaceOrientation:
已被弃用,官方文档告诉我们改用 viewWillTransitionToSize:withTransitionCoordinator
。这为我们(通过 transitionCoordinator
)提供了一种与过渡一起制作动画的方法和一个完成 block ,但没有直接回调真正的过渡“结束”。
transitionCoordinator
的另一个方法是 notifyWhenInteractionEndsUsingBlock:
,但这似乎报告了过渡的交互部分结束,而不是整个过程。
那么,执行此操作的“官方”方法是实现 animateAlongsideTransition:completion
,并简单地忽略动画选项吗?
我意识到我们仍然可以使用旧的 didRotateFromInterfaceOrientation:
,但尽可能进行现代化总是更好。
最佳答案
是的,您可以忽略动画选项,只需使用 'nil' 即可。
来自 WWDC 2014“iOS 8 中的 View Controller 改进”的示例:
- (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。
关于uiview - iOS 9 中界面旋转结束时的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335314/