landscape 是代表横屏,portrait代表竖屏
1、整个项目都可横竖屏
在项目中设置,不过这是全局的,整个项目都可以旋转的
2、单个viewController横竖屏
1)上面的设置:只勾选portrait,其他的不勾选
2)在AppDelegate.m
重写方法
目的:获取到要横竖屏的viewController,然后判断它是否是要进行横竖屏操作的viewController,根据判断返回旋转方向。
#pragma mark - Orientation
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
if ([self.window.rootViewController.presentedViewController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navi = (UINavigationController *) self.window.rootViewController.presentedViewController;
if ([navi.topViewController isKindOfClass:[GPViewController class]]){
GPViewController *vc = (GPViewController *) navi.topViewController;
if (vc.isViewLoaded && vc.isPresented) {
return UIInterfaceOrientationMaskAll;
}
}
}
return UIInterfaceOrientationMaskPortrait;
}
3)在GPViewController这个类中声明一个:isPresented属性,用于当点击返回时,isPresented = false,
原因是:如果不进行这个判断,viewController被dismiss后,回去的parentVC是可以进行横竖屏操作一次的,这样不对。
因此,要进行判断viewController是否要退出。
1)在viewDidLoad方法里
设置:isPresented = true;//viewController可以执行横竖屏
2)在调用销毁VC前,dismissViewControllerAnimated: completion:
设置isPresented = false;//禁用横竖屏