iOS指定页面屏幕旋转,手动旋转(某app实现功能全过程)
2016-11-09 17:04
609 查看
背景: app内有一个双页的界面,然后某天运营说如果其中一页能支持横屏的话,对接的媒体就能给一整块屏幕,然后需求就这样下来了(双页:一页支持横屏效果,另一页不支持)。
接下来就是查文档时间了,Duang,一下就查到了有没有,就是下面这两个方法。
//支持设备自动旋转
//支持横竖屏显示
然后发现单纯这两个方法并没有什么用,因为看文档发现这个需要设置在根视图中,具体说明如下:
也就是说到目前为止这两个方法是全局设置的(打断点发现其实是每个视图进行屏幕旋转时都会去根视图里请求这个方法),好吧,接着查,终于让我查到了解决方法。在根视图中还是继续调用这两个方法,但是shouldAutorotate方法稍微改动了一下,意思就是让系统再去当前显示的那个VC中去问应不应该允许屏幕旋转。
接下来就可以在想要支持设备旋转的VC里重写这两个方法了。
到这里其实指定视图的屏幕自动旋转其实就实现了,可是需求提的是在当前这个VC中两个页面一个支持旋转一个不支持旋转,所以便加上了一个BOOL属性值来判断地图页面是否展示,如果展示就支持旋转。
功能实现了,接下来是页面适配。现在屏幕旋转过来完全无法直视啊,视图只展示在了屏幕左面的一小部分,接着去找解决方法。发现在屏幕旋转时系统会抛出来一个通知:
接下来在回调方法里面重新设置一下各个视图的frame就可以了,还有就是应该在各个View的layoutSubviews里面判断一下,为横竖屏分别写一下视图坐标。
最后一个需求,屏幕方向的手动设置(因为一个界面支持横屏,如果在横屏模式下切回另一个只支持竖屏的界面就会出现问题,所以需要在切回之前重新设置下屏幕方向)。
这里吐槽一下,真的一定要吐槽一下,在百度上搜了半天,也可能是我搜索的方式有问题吧,告诉我的都是那个已经被苹果私有化的那个方法,然后果断Stack Overflow,果断秒解决。
OK,到这里需求就完全实现了,另外说一下全局设置的方法,之前最上面的那个算一种,然后也可以在TARGETS设置里面勾选,也可以在AppDelegate中设置。
最后一点就是其实还有一种伪屏幕旋转,其实就是设置View的transform来旋转一定的角度,不过这个方法计算坐标实在是太伤脑筋了,感兴趣的可以自己试试。
接下来就是查文档时间了,Duang,一下就查到了有没有,就是下面这两个方法。
//支持设备自动旋转
- (BOOL)shouldAutorotate { returnYES; }
//支持横竖屏显示
- (NSUInteger)supportedInterfaceOrientations { returnUIInterfaceOrientationMaskAll; }
然后发现单纯这两个方法并没有什么用,因为看文档发现这个需要设置在根视图中,具体说明如下:
也就是说到目前为止这两个方法是全局设置的(打断点发现其实是每个视图进行屏幕旋转时都会去根视图里请求这个方法),好吧,接着查,终于让我查到了解决方法。在根视图中还是继续调用这两个方法,但是shouldAutorotate方法稍微改动了一下,意思就是让系统再去当前显示的那个VC中去问应不应该允许屏幕旋转。
接下来就可以在想要支持设备旋转的VC里重写这两个方法了。
到这里其实指定视图的屏幕自动旋转其实就实现了,可是需求提的是在当前这个VC中两个页面一个支持旋转一个不支持旋转,所以便加上了一个BOOL属性值来判断地图页面是否展示,如果展示就支持旋转。
功能实现了,接下来是页面适配。现在屏幕旋转过来完全无法直视啊,视图只展示在了屏幕左面的一小部分,接着去找解决方法。发现在屏幕旋转时系统会抛出来一个通知:
接下来在回调方法里面重新设置一下各个视图的frame就可以了,还有就是应该在各个View的layoutSubviews里面判断一下,为横竖屏分别写一下视图坐标。
最后一个需求,屏幕方向的手动设置(因为一个界面支持横屏,如果在横屏模式下切回另一个只支持竖屏的界面就会出现问题,所以需要在切回之前重新设置下屏幕方向)。
这里吐槽一下,真的一定要吐槽一下,在百度上搜了半天,也可能是我搜索的方式有问题吧,告诉我的都是那个已经被苹果私有化的那个方法,然后果断Stack Overflow,果断秒解决。
OK,到这里需求就完全实现了,另外说一下全局设置的方法,之前最上面的那个算一种,然后也可以在TARGETS设置里面勾选,也可以在AppDelegate中设置。
最后一点就是其实还有一种伪屏幕旋转,其实就是设置View的transform来旋转一定的角度,不过这个方法计算坐标实在是太伤脑筋了,感兴趣的可以自己试试。
相关文章推荐
- iOS指定页面屏幕旋转,手动旋转
- iOS指定页面屏幕旋转,手动旋转(iOS 屏幕旋转只在当前控制器生效)
- [置顶] iOS如何指定某个页面可以旋转屏幕,其余控制器都正常竖屏
- iOS实现在webview页面内点击链接,跳转指定App
- iOS实现在webview页面内点击链接,跳转指定App
- iOS 一个app跳转另一个app并实现通信(如A跳到B并打开B中指定页面)
- iOS 强制屏幕实现旋转功能,超级简单。
- iOS 一个app跳转另一个app并实现通信(如A跳到B并打开B中指定页面)
- ios点击屏幕实现退出键盘的功能
- 【IOS】扩展UIImageViewEx实现:手势移动,旋转,缩放(附带一个收缩的文字标签功能)
- ios 应用中直接跳转到指定app页面 或者 app 评价页面 的方法
- ios 应用中直接跳转到指定app页面 或者 app 评价页面 的方法
- 【IOS】扩展UIImageViewEx实现:手势移动,旋转,缩放(附带一个收缩的文字标签功能)
- IOS屏幕旋转详解(自动旋转、手动旋转、兼容IOS6之前系统)
- web页面实现指定区域打印功能
- IOS 实现边滑动边缩放的类似qq主界面的页面切换功能
- ios 应用中直接跳转到指定app页面 或者 app 评价页面 的方法
- ios 应用中直接跳转到指定app页面 或者 app 评价页面 的方法
- 实现一个录音播放功能的app(ios)
- UIWebView中视频播放屏幕自动旋转,app不支持旋转但是某一个页面需要旋转等