在iOS中,自动旋转如何在幕后工作?
1)iOS应该调用的时间和频率是多少?
2)在什么时候(相对于视图控制器回调)窗口是否根据您在supportedInterfaceOrientations中返回的内容设置根视图控制器的框架?
3)iOS在什么时候执行相对于其他回调的自动旋转动画。例如,它是否在viewWillAppear之前,是否为该根视图控制器的所有子视图控制器?
答案 0 :(得分:2)
文件中没有任何内容的原因是它们都不受任何合同保证的约束。只需实现方法来做名称所说的。如果您要根据自己的经验观察或其他人在此处发布的假设做出假设,那么期望您的代码在iOS更新时失败。
答案 1 :(得分:1)
根据Apple's official docs about how orientation support works in iOS,您的问题的答案可能是来自推荐文档的提取:
当基于iOS的设备的方向发生变化时,系统会发出
UIDeviceOrientationDidChangeNotification
通知,让任何感兴趣的人知道发生了更改。
当用户界面旋转时,将调整窗口大小以匹配新方向。窗口调整其根视图控制器的框架以匹配新的大小,并且此大小依次沿视图层次结构传播到其他视图。
该窗口调用根视图控制器的
willRotateToInterfaceOrientation:duration:
方法。 容器视图控制器将此消息转发到当前显示的内容视图控制器。窗口调整视图控制器视图的边界。这会导致视图布局其子视图,从而触发视图控制器的
viewWillLayoutSubviews
方法。运行此方法时,您可以查询应用程序对象的statusBarOrientation
属性以确定当前用户界面布局。调用视图控制器的
willAnimateRotationToInterfaceOrientation:duration:
方法。从动画块中调用此方法,以便您制作的任何属性更改与构成旋转的其他动画同时进行动画处理。动画已执行。
- 醇>
该窗口调用视图控制器的
didRotateFromInterfaceOrientation:
方法。 容器视图控制器将此消息转发给当前显示的内容视图控制器。此操作标志着轮换过程的结束。
注意:您还可以制作一些示例代码以完成体验。