iOS 屏幕强制旋转 (模态、Push、导航栏、状态栏)

状态栏旋转详见

界面旋转准备

  • 在AppDelegate.h中添加属性
//是否旋转
@property (nonatomic, assign) BOOL isRotation;
  • 在AppDelegate.m中添加方法
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    
    if (self.isRotation) {
        //可以针对不同的界面创建不同的值,进行返回
        return UIInterfaceOrientationMaskLandscape;
    }
    return UIInterfaceOrientationMaskPortrait;
}
  • 进入正题,找到需要旋转的界面
- (IBAction)btnClick:(id)sender {
    NSLog(@"旋转");
    //支持旋转
    AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
    app.isRotation = YES;

    [self interfaceOrientation:UIInterfaceOrientationLandscapeLeft];
}

- (void)interfaceOrientation:(UIInterfaceOrientation)orientation
{
    //强制转换
    if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
        
        SEL selector = NSSelectorFromString(@"setOrientation:");
        NSInvocation * invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
        [invocation setSelector:selector];
        [invocation setTarget:[UIDevice currentDevice]];
        int val = orientation;
        [invocation setArgument:&val atIndex:2];
        [invocation invoke];
    }
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    
    //关闭旋转(恢复原状)
    AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
    app.isRotation = NO;
    
    [self interfaceOrientation:UIInterfaceOrientationPortrait];
}

需要注意的是这个值可以在你真的需要旋转的时候进行赋值,比如在视频播放的时候全屏点击的时候进行处理

另附上代码地址仅供参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,254评论 25 709
  • 1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现cl...
    以德扶人阅读 7,416评论 2 50
  • 失意时,无意识的连续摄入食物,随之而来的也许是肥胖。 说起肥胖,我们一般的固有印象是,这个人应该很爱吃,脑海中浮现...
    Crea享轻悦阅读 4,342评论 1 4
  • 线上查询及帮助命令(1 个)help如:mkdir --help 文件和目录操作命令(12 个)ls tree p...
    小王www阅读 1,456评论 0 1