uiview - iOS 9 中界面旋转结束时的回调?

标签 uiview uiviewcontroller ios9 uiinterfaceorientation transitions

我还没有看到这个问题的明确答案,关于 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/

相关文章:

ios - 具有自己的 View 的 UIDocumentInteractionController

ios - 在 View Controller 之间传递数据

ios - iOS 8 中的 UISplitViewController 状态恢复

ios - 协议(protocol)扩展,变异功能

ios - 大小为零的 UIView 对象是否占用大量内存?

ios - UIView 渐变颜色在 UICollectionView 中未正确渲染

ios - 检查 View Controller 类是否存在于 View Controller 数组中

iphone - 无法在 ios 9 中为 AVCaptureDevice 访问相机。

ios - 对成员 'Int.init' 的模糊引用

ios - 如何正确缩放和定位 View