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;
}