Swift屏幕旋转以及状态栏问题解决方案
本文主要介绍屏幕旋转的方法处理,期间状态栏出现的问题的解决,还有强制屏幕翻转的问题
1.屏幕旋转项目配置,支持home键在下,左,右
2. 屏幕旋转所用到的方法
override var shouldAutorotate: Bool
override var supportedInterfaceOrientations: UIInterfaceOrientationMask
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation
刚开始以为只要在控制器中,重写这几个方法就行了,但是这样做是没有效果的,如果项目中有导航控制器,必须在自定义的导航控制器实现,然后再在子控制器中实现。
2.1注意:如果项目有TabbarController,必须实现以下方法
3.在需要旋转的控制器中实现如下方法
以上即可完成对控制器的上左右的翻转,左右说的是相对home键所在的位置,具体查看源码注释
4.涉及到的一些监听屏幕旋转的方法,注意如何强制屏幕旋转,如下
4.1 注意:强制屏幕旋转需要在子控制器中调用强制旋转方法,并且实现支持的旋转方向方法
5.状态栏问题解决:(1)状态栏横屏消失与隐藏 (2)状态栏颜色修改
(1)状态栏横屏消失与隐藏
配置info.plist
在控制器中重写
override var prefersStatusBarHidden: Bool
即可
(2)状态栏颜色修改
可以通过导航控制器的barStyle进行控制
以上就完成了所有需要的配置
效果图(图有点儿low,图不重要,主要看功能)
附录:(不推荐)
网上还有其他的解决方案,通过监听屏幕的旋转,实现对控制器的旋转,个人感觉还是以上的这种方式比较好,更加容易控制,如有兴趣可以参考下下面:
1.设置旋转方向为home在下
2.在导航控制器中使用通知监听
3.在子控制器中关闭自动旋转