iOS之屏幕旋转

换了一个新的工作环境,感觉还是满好的,方向也是自己比较感兴趣,就是项目太紧,不到半个月的时间,已经经历了一个通宵,只是期待项目早点上线吧。
说说关于屏幕旋转适配的问题吧,因为上个项目就有这个需求,除了视频播放的界面是横屏可旋转的,其它的界面都要求是坚屏不可旋转,由于那个项目的根视图控制器就是一个NavigationController,所以当时查的方法,只要自己创建一个NavigationController继承于UINavigationController,作为根视图控制器,重写shouldAutorotatesupportedInterfaceOrientations,这两个方法,然后在每个页面都写重写这两个方法就能实现控制能否旋转和支持横屏竖,但到了现在这个新项目这里行不通了,不管用了,查阅文档资料,才明白,这两个方法都是在根视图控制器上实现的,当根视图是nav时,需要实现在nav,当根视图是tabBarController的时候,还需要在tabBarController上也实现,并且,如果也有navigationController的时候,就需要在两个控制器上都实现,下面配图具体说明一下:

iOS之屏幕旋转
文章图片
NavigationController为根目录时.png
这个是我做的前一个项目架构,对于这种以NavigationController为根视图控制器,只需要让NavigationController继承我们自己写的nav控制器即可,然后在vc1、vc2、vc3分别重写 shouldAutorotatesupportedInterfaceOrientations方法即可。
iOS之屏幕旋转
文章图片
TabBarController.png
这个是我现在做的项目架构,这种不但需要让nav1、nav2、nav3都继承我们自己写的nav控制器,还需要在tabBarController里实现 shouldAutorotate这个方法( supportedInterfaceOrientations方法可以不实现); 最后在vc1、vc2、vc3分别重写 shouldAutorotatesupportedInterfaceOrientations两个方法。当然,这两种屏幕旋转控制的前提是需要让Device Orientation中支持横屏竖屏,如下图 【iOS之屏幕旋转】
iOS之屏幕旋转
文章图片
Device Orientation.png
这样就实现了对屏幕控制,当然,有更好想法的朋友也希望能一起分享,共同进步,由于第二种包含第一种,所以我就只提供第二种的demo了,没看懂的可以根据demo来理解,欢迎大家star。
demo点击下载
版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!

    推荐阅读