影响当前VC方向的因素有以下几个:
可以在info.plist中设置,
在应用启动后,AppDelegate的supportedInterfaceOrientations方法
可以覆盖info.plist中的设置。
3、root vc的
shouldAutorotate:
此方向的含义是指出在设备旋转时,vc是否也跟着旋转。
默认是YES
4、root vc的
supportedInterfaceOrientations
指定了vc支持的方向。
默认是UIInterfaceOrientationMaskAllButUpsideDown
在决定当前vc的方向时,分两种情况:
第一种情况:vc在显示时的初始方向。
第一种情况:设备在旋转时vc的方向。
第一种情况:vc在显示时的初始方向:
此种情况,如果root vc设置了preferredInterfaceOrientationForPresentation
,则按其设定的方向显示。
root vc没有设定preferredInterfaceOrientationForPresentation ,
如果设备当前的方向是root vc支持的方向,则按设备的方向显示;
如果设备当前的方向root vc不支持,则系统从vc支持的方向中,按
系统默认的优先级取值。
第二种情况:vc在设备旋转时的方向:
在设备旋转时,如果root vc的shouldAutorotate是NO,则vc不动。
否则,
如果设备的方向是root vc支持的,则vc旋转至设备的当前方向,
设备的方向root vc不支持,vc不动。
UIInterfaceOrientationMask和UIInterfaceOrientation的关系:
UIInterfaceOrientationMask指定了常用的几种应用支持的
方向的集合。
1、设备的当前方向。
2、Application支持的方向。可以在info.plist中设置,
在应用启动后,AppDelegate的supportedInterfaceOrientations方法
可以覆盖info.plist中的设置。
3、root vc的
shouldAutorotate:
此方向的含义是指出在设备旋转时,vc是否也跟着旋转。
默认是YES
4、root vc的
supportedInterfaceOrientations
指定了vc支持的方向。
默认是UIInterfaceOrientationMaskAllButUpsideDown
其返回值必须是Application的supportedInterfaceOrientations 范围之内。
默认值是设备当前的方向。
用于指定vc在显示时的初始方向。
其返回值必须在roo vc的supportedInterfaceOrientations的范围之内。
在决定当前vc的方向时,分两种情况:
第一种情况:vc在显示时的初始方向。
第一种情况:设备在旋转时vc的方向。
第一种情况:vc在显示时的初始方向:
此种情况,如果root vc设置了preferredInterfaceOrientationForPresentation
,则按其设定的方向显示。
root vc没有设定preferredInterfaceOrientationForPresentation ,
如果设备当前的方向是root vc支持的方向,则按设备的方向显示;
如果设备当前的方向root vc不支持,则系统从vc支持的方向中,按
系统默认的优先级取值。
第二种情况:vc在设备旋转时的方向:
在设备旋转时,如果root vc的shouldAutorotate是NO,则vc不动。
否则,
如果设备的方向是root vc支持的,则vc旋转至设备的当前方向,
设备的方向root vc不支持,vc不动。
UIInterfaceOrientationMask和UIInterfaceOrientation的关系:
UIInterfaceOrientationMask指定了常用的几种应用支持的
方向的集合。