两种方法,分别是:
第一种: 在继承根控制器的子类里 重写方法 (以下举例为NavigationController, TabBarController只需要找到对应的VC对象即可)
// 哪些页面支持自动转屏
- (BOOL)shouldAutorotate
{
// ViewController 设置为支持自动转屏
if ([self.topViewController isKindOfClass:[ViewController class]]) {
return YES;
}
return NO;
}
// 支持旋转屏幕的方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
// ViewController设置支持旋转的方向
if ([self.topViewController isKindOfClass:[ViewController class]]) {
return UIInterfaceOrientationMaskAllButUpsideDown;
}else {
return UIInterfaceOrientationMaskPortrait;
}
return UIInterfaceOrientationMaskPortrait;
}
第二种:直接在需要设置的VC里重写方法
// 支持设备自动旋转
- (BOOL)shouldAutorotate {
return YES;
}
// 支持横竖屏显示
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
注意:如果你window的根控制器是一个NavigationController, 需要在子类里令VC调用重写的方法 并用这个子类根控制器创建实例
- (BOOL)shouldAutorotate {
return [self.viewControllers.lastObject shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations {
return [self.viewControllers.lastObject supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return [self.viewControllers.lastObject preferredInterfaceOrientationForPresentation];
}