iOS项目中横竖屏切换

项目里面页面整体竖屏,但是有横屏情况就需要在general中将device orientation的几个方向都选上,如果只选了竖屏是没办法在项目里通过代码支持横屏的。

一般项目里都会有UINavigationController,写一个UINavigationController的子类,实现下面方法,如果项目里有下导航,则在UITabBarController里也实现此方法:

#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_9_0
- (NSUInteger)supportedInterfaceOrientations
#else
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
#endif
{
    return UIInterfaceOrientationMaskPortrait;//设置只要是导航控制器就是竖屏  
}

在需要用到导航控制器的时候所创建的导航都继承这个子类,就能保证所有的页面都是竖屏,想要横屏的时候选择present一个vc,在vc中实现下述代码:

//支持旋转
-(BOOL)shouldAutorotate{
         return YES;
}

 //支持的方向 
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
         return UIInterfaceOrientationMaskLandscapeRight;
 }
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
         return UIInterfaceOrientationLandscapeRight;
}
-(void)viewWillAppear:(BOOL)animated{

}

这样present的这个vc就可以旋转横屏了

如果想自己控制每个页面的横竖屏,就需要在UINavigationController的子类这样写:

-(BOOL)shouldAutorotate{
    return self.topViewController.shouldAutorotate;
}
//支持的方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return self.topViewController.supportedInterfaceOrientations;
}

然后在具体的vc中设置vc的方向即可。
参照:iOS设置某个界面强制横屏,进入就横屏

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 成都之行第一站:宽窄巷子✺(∗❛ัᴗ❛ั∗)✺ 宽窄巷子是国家AA级景区,由宽巷子、窄巷子、井巷子并行排列组成,是...
    梦浮荏阅读 969评论 23 39
  • 百事孝为先。 老人在哪里,老家就在哪里。 父母在哪里,老家就在哪里。 家是我们的根,也是我们的方向。 即使没什么事...
    莫少玲阅读 399评论 0 1
  • 魅蓝3s是魅族去年发布的一款手机总体还是不错的 我们先来看看机身正面,正面屏幕右上角有一点裂缝,总的还是不影响使用...
    科技音浪阅读 386评论 0 0
  • 下载Spring Framework 的 jar http://repo.spring.io/release/or...
    zheting阅读 1,983评论 0 1

友情链接更多精彩内容