iOS学习笔记iOS开发技能

iOS中指定页面可旋转

2019-11-07  本文已影响0人  BWLi420

1. 设置项目支持方向

image.png

2. AppDelegate中添加一个属性,记录是否允许旋转

/// 是否允许旋转
@property (assign, nonatomic) BOOL allow;
//根据设置调整支持方向
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    if (self.allow) {
        return UIInterfaceOrientationMaskAllButUpsideDown;
    }
    return UIInterfaceOrientationMaskPortrait;
}

3. 创建控制器基类,便于操作

//基类:默认不支持旋转
- (BOOL)shouldAutorotate {
    return NO;
}

//默认支持方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

4. 针对项目架构 TabBarController + NavigationController

//跟随当前显示控制器的设置
- (BOOL)shouldAutorotate {
    return self.topViewController.shouldAutorotate;
}
//跟随当前导航控制器的设置
- (BOOL)shouldAutorotate {
    return self.selectedViewController.shouldAutorotate;
}

5. 在想要旋转的控制器中实现以下方法

//打开允许旋转
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    
    ((AppDelegate *)[[UIApplication sharedApplication] delegate]).allow = YES;
}

//关闭允许旋转
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    
    ((AppDelegate *)[[UIApplication sharedApplication] delegate]).allow = NO;
}

//支持旋转
- (BOOL)shouldAutorotate {
    return YES;
}

至此,已实现以上需求。

完整Demo已上传,点击这里查看 ScreenRotationDemo

上一篇 下一篇

猜你喜欢

热点阅读