美文网首页iOSiOS 细碎ios basic
iOS 关于屏幕旋转shouldAutorotate

iOS 关于屏幕旋转shouldAutorotate

作者: 燃烧的大叔 | 来源:发表于2015-01-19 17:59 被阅读29825次

iOS中关于shouldAutorotate(屏幕旋转的问题);

在这之前必须在你的Info里面配置你的支持方向信息:

targets -> General -> Deployment Info

我们的项目需要在个别的menuController里面是需要旋转,有的menuController是不需要旋转。我就尝试写个demo看是不是能旋转,不旋转;在demo里面测试是OK的。当我进入工程里面,跟新如下代码,运行的时候发现是错误的。本来是不旋转,可是还是可以旋转的,很郁闷。我就尝试在plist只支持竖屏,shouldAutorotate为YES,应该是旋转的,但是不旋转。我就在想为什么demo是可以的!我就开始翻资料

图1

立马就找到了一个方法,如下

找到的是6之前的方法

但是这个方法是在6之后被 NS_DEPRECATED_IOS(2_0, 6_0) 弃用了。加进controller里面各种尝试是不成功的。

后来找到了下面的连接,上面是说是跟你的tabbarController和navigationController有关系的。也就是你程序一开始的入口是谁控制的(你的工程的根试图控制器)!我在我的根试图控制器加上 图1的代码之后测试是成功的!

但是想在他的menuController里面不支持旋转的的时候,shouldAutorotate为NO,只支持竖屏的时候,他还是可以旋转的。但是我如果是模态推出用navigationController控制的时候shouldAutorotate为NO,只支持竖屏,是OK的。很是郁闷网上查了各种方法,没有找到相应的结果。我目前就是需要旋转的就用单独的navigationController去控制,不明白是哪里写错了还是没有看到相关的API。希望可以有人做到,因为项目进度表的原因,暂时就想这样写了。等待项目完成或者不加班的时候,再重新整理一下关于iOS屏幕旋转的问题!如果你有更好的解决方法,可以密我哦!我的邮箱maomaoxiansheng@outlook.com 、maomaoxiansheng@gmail.com,谢谢了!

参考 :

http://blog.csdn.net/totogogo/article/details/8002173

http://www.cocoachina.com/bbs/read.php?tid-116091.html 

http://stackoverflow.com/questions/26503423/shouldautorotate-behavior-in-ios-8

http://stackoverflow.com/questions/23960478/child-uiviewcontrollers-not-calling-shouldautorotate-ios-7

http://blog.sina.com.cn/s/blog_6c9f384f0101538v.html

下面的是补充,上面这样写的有时候是有问题的,我们测试出来的伪BUG,当你的手机不是竖屏的时候启动应用程序,你的启动页面是横屏的,到了里面因为设置了有的是横屏有的是竖屏,就会出现很大的问题,后来我们在targets -> General -> Deployment Info或者plist里面的配置支持竖屏,在你的AppDelegate里面,用代码去控制。

附上这三个方法

然后在你想竖屏想横屏的地方写上相应的横竖屏的代码就可以了!

上面写得不够清楚,在模态推出之后发现有时候不管用,我在看API的时候也没有看到要注意的地方。后来发现在ViewController的shouldAutorotate要在View出现之前调用才会管用。而且这个方法没有set方法。创建一个继承UINavigationController的类

.h .m

然后再模态推出的时候

初始化NavigationController

之后在这个listVC里面写上

是否支持旋转

UITabBarController

.h .m 初始化

祝大家,编码愉快,永不BUG。多锻炼身体哦。

iOS学习的地方还是很多的!加油!

相关文章

  • 屏幕旋转和弹出框

    iOS中控制屏幕旋转相关方法 shouldAutorotate:是否支持屏幕旋转 alertView:clicke...

  • iOS 关于屏幕旋转shouldAutorotate

    iOS中关于shouldAutorotate(屏幕旋转的问题); 在这之前必须在你的Info里面配置你的支持方向信...

  • iOS屏幕旋转

    iOS屏幕旋转 1.基本属性和概念 shouldAutorotate supportedInterfaceOrie...

  • iOS 屏幕旋转shouldAutorotate

    最近项目中有个分时图的显示需要进行横屏处理。因为整个项目里面大部分页面都是需要竖屏显示的。只有几个页面是横屏显示。...

  • ios实现屏幕旋转的方法

    1、屏蔽AppDelegate下面的屏幕旋转方法 (BOOL)shouldAutorotate {//是否允许转屏...

  • iOS学习资料五

    1、控制屏幕旋转,在控制器中写 /** 是否支持自动转屏 */ - (BOOL)shouldAutorotate ...

  • 屏幕旋转时不调用shouldAutorotate

    原因: 可能是被当前Controller的父视图拦截导致 解决方法: 1.如果当前Controller被Navig...

  • 屏幕旋转

    屏幕旋转 推荐文档 了解UIWindow——UIWindow实践 iOS屏幕旋转问题总结 IOS:屏幕旋转与变换 ...

  • 设置页面横竖屏

    // 是否支持旋转 - (BOOL)shouldAutorotate { return NO; } // 旋转方向...

  • 关于iOS屏幕旋转

    在iOS开发中,最常见的屏幕旋转方案: 取消Device Orientation的选择按钮取消选中 在appDel...

网友评论

  • 曾经像素有点低:很强大,很清晰,不仅解决了问题,而且一步一步的阅读下来,收获颇丰。很好的文章,收录到我的文集了
  • 小帅er:如果我是一个竖屏进入到一个横屏中去 再返回到竖屏那个竖屏有时候还是横屏状态 比如程序退到后台在进入 就出现这种情况
    小帅er:@燃烧的大叔 嗯 好的
    燃烧的大叔:@小帅er 你可以再willDisapper的时候
    NSNumber * value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
    让他竖起来。这个你掌控一下。
  • kafi:非常感谢楼主的分享,但是有些语言需要组织下,有一部分的逻辑没看懂,不能因为我们程序猿平时少说话就不注重语言的严谨性啊,好的语言逻辑对自己和对别人都有非常大的帮助。
    风雨vs同舟:完全同意,可能能完美解决问题,但是上下文不连贯,阅读起来很是费劲,而且很多错别字,自己写完至少也得阅读一下,改改错别字吧。(我对我自己说了一句:不看滚):smile:
  • char_hu:非常感谢,完美解决我的需求!不过建议楼主有时间还是上传demo,这样比较好让大家理解。哈哈,我也是琢磨了你说的,试了好一会才搞定。
    char_hu:@Joneding 得用presdent 方法,不能采用push.你再试试。在仔细看看楼主写的文章,里面几乎源代码都写了。
    Joneding:@5183ae9429f4 请问你是怎么解决的 我的还是不能横竖屏的点击切换 因为在视频播放的时候需要横屏 和竖屏的切换 都是 push 进去的 有代码吗 发一下 402672325
  • 7e387003ffda:你好,我现在遇到的情况是: 别的游戏接入我们的SDK, 如果他们的游戏是横屏的话,我的登录的那个界面 ,旋转是正常的,但是点击注册,present进入到注册界面,注册界面三个方法都能旋转了..本来游戏 不支持竖屏的, 请问 怎么可以使我SDK的旋转方向 和 游戏里面的一致?
    燃烧的大叔:@tainss 多谢,更加清楚。
    7e387003ffda:@燃烧的大叔 我的SDK 用自动布局做的默认支持三个方向,现在我的解决方法是 让注册的支持的supportedInterfaceOrientations 和 info.plist 的一致. 参考链接:http://sxcheen.com/2016/04/29/iOS-Orientations/
    燃烧的大叔:注册也用你登陆的方法,一个用NA去控制
  • 进击的秃瓢:解决了
    进击的秃瓢:@西西西瓜same didFinishLaunchingWithOptions 方法中加上[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
    西西西瓜sama:@留不下了走吧 求教怎么解决的,6P上面 横屏打开应用 直接整个app横屏 还想让他是竖屏的状态
  • 进击的秃瓢:楼主 我是在6splus 的情况下 横屏打开应用 会出现问题,按照你说的在 APPdelegate 中写的三个方法后 整个 APP 就都不能转了 能不能留个联系方式
  • sfandy:必须present模式推出来吗?push 的有试过没有?
    sfandy:@小草先生 NO
    小草先生:-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

    这个方法可以
    山是水的故事:@sfandy push的好像不行。
  • RYC:大神,有demo 吗 ,做到这块,拉进项目中使用,当返回到上一个控制器时,就会出现横屏,搞不懂怎么回事,
    RYC:@山是水的故事 我是通过模态推出一个全屏的视频播放,也就是让视图旋转,当点击返回按钮的时候,上一个界面的视图也是横着的。
    山是水的故事:@燃烧的大叔 当从横屏中返回到上一个控制器时,就会出现横屏,请问下这是什么情况?
    燃烧的大叔:@RYC 没有demo我也是项目中做的。
  • 神经骚栋:博主大人,有Demo吗?因为做到这一块 没看清楚
  • 童真的烂漫:“我就尝试在plist只支持竖屏,shouldAutorotate为YES,应该是旋转的,但是不旋转”应该就是不旋转吧?
  • wwwwwwww1:感谢楼主,已经实现功能!
  • 27db4a36ff95:可以说目前整个互联网,都没有一个正确的关于旋转方面的文档。百度是最垃圾的,没有之一,要么瞎说,要么复制粘贴。CSND上从来是有人提问没人回答。segment 稍微好一点,知乎好一点,简书好一点,stackOverFloaw好一点、楼主这篇算是稍微详细一点的解释了。
  • a3012f27d162:我是模态到一个tabbarcontroller控制器,在tabbar下有三个navigation,我应该在哪个里面控制
  • N仃目: 求问这些方法对iPhone都有效,但是到了iPad上都不管用怎么办?我在iPad上该写的3各方法都写了,但是他还是能横屏怎么破?求解。。。。
    橘花小茶:@N仃目 把你工程的Requires full screen选项钩上试试
    遗编絶简:@N仃目 ipad上横屏解决了么
    燃烧的大叔:@N仃目 你看下你的rootviewcontroller是哪个,让你的rootviewcontroller去控制

本文标题:iOS 关于屏幕旋转shouldAutorotate

本文链接:https://www.haomeiwen.com/subject/yzchxttx.html