在完成一个某个界面强制竖屏,其他界面随系统旋转的需求的时候,遇到一个问题:
手里有一份实现了需求的Demo,对照着把自己的项目中所有的需要改的地方都改了。在各个涉及到的控制器(UINavigationController、UIViewController)里都实现了标题中的两个方法,打了断点就是不走那两个方法。除非dismiss、pop掉控制器或者点击Home键(即界面消失)就会调用。supportedInterfaceOrientations这个方法。
网上找了很多种说法,大多都是这样的 ↓
但是都尝试了还是不对。
最后发现问题出在Info.plist内。
Info.plist示意图如图所示,iPad支持的方向有4个。而上面(即iPhone),支持的只有三个。所以我用手机测试的时候就正常,但是在iPad上就不走那两个方法。我把第二个Portraint (top home button)(即upside down)删掉之后,iPad上测试可按照预期效果正常运行。
所以如果iPhone上测试不走标题所述两方法的话,就看看Supported interface orientations对应的Item是不是只有三个或三个以下。
如果iPad上测试不走标题所述两方法的话,就看看Supported interface orientations(iPad)对应的Item是不是只有三个或三个以下。
网友评论