楼主最近项目中加了视频播放,视频播放的话,肯定会涉及到全屏播放,全屏和小屏好做,主要是旋转.
最开始楼主的视频全屏了,但是模拟器是竖屏.没有自动横过来.这也无所谓,大家会说手机屏幕横过来就可以了
但是,状态栏还在上边,你把手机横过来,状态栏就在左边了.这样的体验,不觉得怪怪的么,也试过隐藏状态栏,但是我觉得这个效果不是我想要的.
也是在逃避遇到的问题,后来楼主找了好多资料,查询研究,经过测试总结,问题解决了.
先说原因吧:
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.问题得到解决.欢迎批评指正,这个只是一个整理,是自己搜集了别人的说法,和自己的调试,得出的结论,不准确之处欢迎提出来,互相学习.
网友评论