landscape 是代表橫屏,portrait代表豎屏
1、整個項目都可橫豎屏
在項目中設置,不過這是全局的,整個項目都可以旋轉的
4E1C252A-47E7-4F99-A110-3E04180AD3DA.png
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;//禁用橫豎屏