导航控制器 中 代码设置屏幕旋转

本文详细介绍了在iOS6之后如何通过代码设置当前旋转的视图控制器屏幕,包括设置根视图控制器和子视图控制器的旋转支持方法。同时解释了界面旋转时根视图控制器和子视图控制器的处理方式,以及如何在代码中与plist文件设置的旋转方向进行交集判断,避免程序崩溃。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


iOS6之后通过代码来设置 当前旋转的视图控制器屏幕

必须是window的根视图控制器(window 的rootViewController)

或者是rootViewController 模态(present)跳转出来的子视图控制器(push 的不行,push出得子视图控制 用代码设置旋转 是没有作用的)



如果根视图控制器是导航 那么只能由导航的shouldAutorotate
 supportedInterfaceOrientations 重写这两个方法
 通过类别 或者继承的方式增补方法



plist 配置文件设置的旋转方向控制的全局 所有界面的
 
 如果代码中子视图控制器也设置了那么在旋转那个子视图控制器的屏幕时取plist文件和代码设置 旋转的交集 

如果没有交集程序就会crash 崩溃


//********************************导航

//界面 旋转的时候 调用
//是否 支持 界面 旋转
- (BOOL)shouldAutorotate {
    
    //self.topViewController -->获取 当前 导航中正在显示的界面地址(栈顶的子视图控制器)
    //每次旋转 去调用 当前正在显示的界面 控制
    return self.topViewController.shouldAutorotate;
}
//界面支持的方法
- (NSUInteger)supportedInterfaceOrientations {
    //交给导航的当前 子界面 控制器来 控制旋转
    return self.topViewController.supportedInterfaceOrientations;
}



//***********************************push 出来的视图

当前界面 不是window 的rootViewController)或者是rootViewController 模态(present)跳转出来的子视图控制器

这时 我们 可以在屏幕旋转的时候 让导航 的方法来调用下面的旋转方法

- (BOOL)shouldAutorotate {
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
    //支持 竖屏
    return UIInterfaceOrientationMaskPortrait;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值