美文网首页
iOS强制某个界面横屏的方法

iOS强制某个界面横屏的方法

作者: 郑军红 | 来源:发表于2019-03-21 10:09 被阅读0次

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

    1.AppDelegate.h中外露一个属性

    @property(nonatomic,assign)BOOL allowRotation;//是否允许转向

    2.AppDelegate.m中添加方法(如果属性值为YES,仅允许屏幕向左旋转,否则仅允许竖屏)

    - (UIInterfaceOrientationMask)application:(UIApplication

    *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow

    *)window

    {

        if (_allowRotation == YES) {

            return UIInterfaceOrientationMaskLandscapeLeft;

        }else{

            return (UIInterfaceOrientationMaskPortrait);

        }

    }

    第三步:

    1.在需要强制横屏的控制器.m中添加旋转为横屏方法

    - (void)setNewOrientation:(BOOL)fullscreen

    {

    if (fullscreen) {

            NSNumber *resetOrientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];

            [[UIDevice currentDevice] setValue:resetOrientationTarget forKey:@"orientation"];

            NSNumber *orientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];

            [[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"];

        }

    }

    2.view DidLoad中添加以下代码

    AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

        appDelegate.allowRotation = YES;//(以上2行代码,可以理解为打开横屏开关)

    [self setNewOrientation:YES];//调用转屏代码

    3.重写导航栏返回箭头按钮,拿到返回按钮点击事件

    - (void)back

    {

        AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

        appDelegate.allowRotation = NO;//关闭横屏仅允许竖屏

        [self setNewOrientation:NO];

        [self.navigationController popViewControllerAnimated:YES];

    }

    相关文章

      网友评论

          本文标题:iOS强制某个界面横屏的方法

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