我还没有看到这个问题的明确答案,iOS 8周围的大量噪音发生了变化,但我想为iOS 9解决这个问题:
界面方向更改ENDS后获取回调的正确方法是什么?
自iOS 9起,didRotateFromInterfaceOrientation:
已被弃用,官方文档告诉我们使用viewWillTransitionToSize:withTransitionCoordinator
代替。这为我们(通过transitionCoordinator
)提供了一种在转换和完成块旁边动画的方法,但没有直接回调过渡的真正“结束”。
transitionCoordinator
中的另一种方法是notifyWhenInteractionEndsUsingBlock:
,但这似乎报告了过渡的交互部分的结束,而不是整个过程。
那么,这是实现animateAlongsideTransition:completion
的“官方”方式,而忽略了动画选项吗?
我意识到我们仍然可以使用好的didRotateFromInterfaceOrientation:
,但在可能的情况下进行现代化总是更好。
答案 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。