横竖屏

landscape 是代表横屏,portrait代表竖屏

1、整个项目都可横竖屏

在项目中设置,不过这是全局的,整个项目都可以旋转的

横竖屏_第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;//禁用横竖屏

你可能感兴趣的:(横竖屏)