由于项目的需要,在播放视频的ViewController中需要支持横屏旋转播放器,故重新写了一下整个app的控制。
开始吧,首先保证一下自己的项目是支持三个方向的旋转的。
这里明确一下,相信大家做项目的时候都已经有一种意识,就是在开始项目的时候,都配备了 BaseViewController、BaseNavigationController 这两个最基础的类以供所有的ViewController,NavigationController继承。
额:如果没有,建议尽快添加 :-D
只要项目支持三个方向的旋转,不添加任何代码的情况下,app在手机旋转的时候就会自动旋转的。
在BaseNavigationController增加下面两个方法:
- (BOOL)shouldAutorotate {
if (self.topViewController != nil) {
//如果当前有VC,获取VC里面的shouldAutorotate
return [self.topViewController shouldAutorotate];
}
return [super shouldAutorotate];
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
if (self.topViewController != nil) {
//如果当前有VC,获取VC里面的supportedInterfaceOrientations
return [self.topViewController supportedInterfaceOrientations];
}
return [super supportedInterfaceOrientations];
}
在BaseViewController增加下面两个方法:
- (BOOL)shouldAutorotate {
//这里需要返回YES
// 如果你的项目仅仅在某个VC里面支持横屏,其他都不支持的话,这里也需要返回YES
return YES;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
//如果你的项目仅仅在某个VC里面支持横屏,其他都不支持的话,这里也需要返回UIInterfaceOrientationMaskPortrait
//而如果你的项目每一个页面都需要支持横屏,这里返回UIInterfaceOrientationMaskAllButUpsideDown就可以了
return UIInterfaceOrientationMaskPortrait;
}
现在的代码代表是项目所有页面都只支持一个方向Portrait,不支持横屏。
如果你现在新建一个需要横屏的LandscapeViewController,则你只需要在 LandscapeViewController.h 继承BaseViewController
@interface LandscapeViewController : BaseViewController
在LandscapeViewController.m 里面 增加
#pragma mark 开放横屏切换
- (BOOL)shouldAutorotate {
return YES;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
现在就实现了在整个项目中 仅仅LandscapeViewController这个VC能旋转。