基础知识:
了解屏幕旋转首先需要区分两种 orientation
device orientation 设备的物理方向
interface orientation 界面显示的方向
iOS提供了在设备旋转时,界面显示发生相应适配的能力,以达到方便用户使用并提供最佳显示效果的目的。
开发者需要指定应用支持的显示方向,并对界面显示做出对应的适配。
由于界面适配的工作量相当大,目前国内的应用大都只支持默认的竖屏方向。
屏幕旋转的流程
加速计是整个IOS屏幕旋转的基础。
依赖加速计,设备才可以判断出当前的设备方向。
当加速计检测到方向变化的时候,会发出
UIDeviceOrientationDidChangeNotification 通知。
屏幕旋转的流程如下:
1>、加速计来识别设备的旋转方向。发送 UIDeviceOrientationDidChangeNotification 设备旋转的通知。
2>、app 接收到旋转事件(通知事件)。
2>、app 通过AppDelegate通知当前程序的KeyWindow。
3>、Window 会知会它的 rootViewController,判断该view controller所支持的旋转方向,完成旋转。
4>、如果存在 modal 的view controller的话,系统则会根据 modal 的view controller,来判断是否要进行旋转。