在做iPad旋转功能的时候,发现shouldAutorotate、supportedInterfaceOrientations等方法不调用,强制旋转的方法也失效。可能的情况如下:
1. 多层级视图导致的拦截情况,可参考:https://blog.csdn.net/zhaotao0617/article/details/51131038
2. 不需要全部方向都支持的情况。项目里关于支持的方向的设置,即Supported interface orientations。一共有三个key,即Supported interface orientations,即Supported interface orientations (iPhone),即Supported interface orientations (iPad)。第一个是总体的默认设置(也是General里面的Device Orientaion),后面两个是针对iPhone或iPad单独的设置,若未设置则会按照默认设置执行。这里的设置会优先于回调的返回值。
iPad支持的四个方向不全部勾选,即Supported interface orientations (iPad) / Supported interface orientations最多设置三个。可能是因为iPad上supportedInterfaceOrientations默认也是四个方向都支持,所以设置了四个的话也就没必要再回调了。但是不论回调返回什么值,都无法旋转到未设置的那个方向。
3. 部分页面需要全部方向支持,部分页面要指定方向。此时需要勾选General中的Requires full screen,并且Supported interface orientations (iPad) / Supported interface orientations所有的方向都要设置。这样shouldAutorotate、supportedInterfaceOrientations等方法就会回调,强制旋转的方法也会生效。但是APP就无法支持slipView了,要支持slipView就必须让所有页面都适配横竖屏。
后面内容是来自官方的回复(TSI):If your app must support split view you will need to support all orientations and potential window sizes. As a general concept you can think a split screen app as an app that cannot require full screen and a full screen app as one that cannot support split views.