美文网首页iOS 细节大集合
iOS - 强制某个页面横屏,返回竖屏

iOS - 强制某个页面横屏,返回竖屏

作者: Mr_Bob_ | 来源:发表于2017-07-10 11:22 被阅读711次
    第一步:

    首先在工程文件里设置如下:

    image.png
    第二步:

    在AppDelegate中添加方法关闭横竖屏切换,方法如下

    • AppDelegate.h中外露一个属性
      @property(nonatomic,assign)BOOL allowRotation;//是否允许转向
    • AppDelegate.m中添加方法
    - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window{
        if (_allowRotation == YES) {   // 如果属性值为YES,仅允许屏幕向左旋转,否则仅允许竖屏
            return UIInterfaceOrientationMaskLandscapeRight;  // 这里是屏幕要旋转的方向
        }else{
            return (UIInterfaceOrientationMaskPortrait);
        }
    }
    
    第三步:

    在需要强制横屏的页面写上如下代码:

    • 在viewDidLoad 方法设置如下:
        AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
        appDelegate.allowRotation = YES;//(以上2行代码,可以理解为打开横屏开关)
        [self setNewOrientation:YES];//调用转屏代码
    
    • 具体实现方法:
    - (void)setNewOrientation:(BOOL)fullscreen{
        if (fullscreen) {
            NSNumber *resetOrientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];
            [[UIDevice currentDevice] setValue:resetOrientationTarget forKey:@"orientation"];
            NSNumber *orientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
            [[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"];
        }else{
            NSNumber *resetOrientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];
            [[UIDevice currentDevice] setValue:resetOrientationTarget forKey:@"orientation"];
            NSNumber *orientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
            [[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"];
        }
    }
    
    • 在页面离开的时候恢复竖屏
    - (void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:animated];
        AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
        appDelegate.allowRotation = NO;//关闭横屏仅允许竖屏
        [self setNewOrientation:NO];
    }
    

    相关文章

      网友评论

      本文标题:iOS - 强制某个页面横屏,返回竖屏

      本文链接:https://www.haomeiwen.com/subject/ikyyhxtx.html