美文网首页
关于shouldAutorotate不执行的问题

关于shouldAutorotate不执行的问题

作者: 困惑困惑困惑 | 来源:发表于2016-11-02 21:25 被阅读486次

    楼主最近项目中加了视频播放,视频播放的话,肯定会涉及到全屏播放,全屏和小屏好做,主要是旋转.

    最开始楼主的视频全屏了,但是模拟器是竖屏.没有自动横过来.这也无所谓,大家会说手机屏幕横过来就可以了

    但是,状态栏还在上边,你把手机横过来,状态栏就在左边了.这样的体验,不觉得怪怪的么,也试过隐藏状态栏,但是我觉得这个效果不是我想要的.

    也是在逃避遇到的问题,后来楼主找了好多资料,查询研究,经过测试总结,问题解决了.

    先说原因吧:

    1.如果只有ViewController的话,shouldAutorotate,一定会走的.

    2.但是关键是我们项目都是navigationController,shouldAutorotate方法就不会走了.属于方法被navigationController拦截了.这样就需要在你的navigationController基类添加以下代码:

    -(BOOL)shouldAutorotate{

    return self.topViewController.shouldAutorotate;

    }

    /**以下两个方法可不写*/

    - (UIInterfaceOrientationMask)supportedInterfaceOrientations

    {

    return UIInterfaceOrientationMaskAll;

    }

    -(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{

    returnUIInterfaceOrientationLandscapeRight;

    }

    3.但是我发现ViewController里的shouldAutorotate还是不执行,我分析了一下,还是被拦截了,原因是我们项目都有tabbarController,也会被这个拦截掉.所以在你的tabbarController的基类里边添加如下代码:

    - (BOOL)shouldAutorotate{

    return self.selectedViewController.shouldAutorotate;

    }

    /**以下两个方法可不写*/

    - (UIInterfaceOrientationMask)supportedInterfaceOrientations

    {

    return UIInterfaceOrientationMaskAll;

    }

    -(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{

    return UIInterfaceOrientationLandscapeRight;

    }

    4.最后别忘记在你的ViewController里边添加这个代码:

    - (BOOL)shouldAutorotate{

    return NO;

    }

    5.问题得到解决.欢迎批评指正,这个只是一个整理,是自己搜集了别人的说法,和自己的调试,得出的结论,不准确之处欢迎提出来,互相学习.

    相关文章

      网友评论

          本文标题:关于shouldAutorotate不执行的问题

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