美文网首页
iOS屏幕旋转相关的问题

iOS屏幕旋转相关的问题

作者: 杨桃wd | 来源:发表于2017-03-06 18:26 被阅读0次

    最近做项目遇到了屏幕旋转的问题,先说一下我的需求吧:app除了视频播放这一个界面支持横竖屏外,其他界面都只支持竖屏,并且在视屏播放这个界面,不支持手机自动旋转,只能通过点击放大按钮,将播放器变为横屏放大。

    一、关于orientation

    屏幕旋转有两种:
    1.设备的物理方向(device orientation),即app级别的;
    2.界面显示的方向(interface orientation),即viewcontroller级别的。

    二、如何设置orientation

    我们可以在info里面配置我们app支持的方向信息,也就是设备的物理方向,如下图,默认情况下,Upside Down没有勾选,其他的都选了。

    图1.png
    为什么没有勾选Upside Down呢?因为iphone的电话app是不支持Upside Down 的,如果你的app支持Upside Down,当用户正在使用你的app的时候,突然有电话进来了,就会看到整个来电画面是颠倒的,用户体验不好,所以不建议勾选。

    重点来了!!!!因为我们要实现除了视频播放页之外,其他界面都只支持竖屏,所以在Appdelegate.m 里面要写上如下代码:

    #pragma mark 禁止横屏显示
    #pragma mark 这个代理方法的优先级最高,self.allowRotation = 0,那么UI界面只支持竖屏;self.allowRotation = 1,根据自己需求返回相应的方向
    -(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
    {
        if (self.allowRotation) {
       //根据自己需求,返回相应的方向
            return UIInterfaceOrientationMaskLandscapeRight;
        }
        return UIInterfaceOrientationMaskPortrait;
    }
    

    Appdelegate.h里如下:

    Appdelegate.h.png

    我们在视频播放页面将allowRotation设置为YES即可,代码如下:

     NTESAppDelegate *appdelagate = [UIApplication sharedApplication].delegate;
     appdelagate.allowRotation = YES;
    

    便可以实现,除视频播放页面外,其他都只支持竖屏显示的需求

    三、根视图中的设置

    这一点很重要,因为经常会被忽略掉,就是:必须在根视图设置相应的代码,否则播放器界面不能实现真正的横屏放大的效果。我的根视图是viewcontroller。(虽然实现效果了,但是不知道为啥,我这里即便设置了shouldAutorotate方法,但是我的播放器界面的shouldAutorotate方法,仍然不走,如果有知道的大神,还请不吝赐教!!)

    根视图的.m文件.png

    四、播放器视图中的设置

    我的需求是:点击按钮,播放器横屏放大

    全屏按钮点击事件.png 退出全屏的点击事件.png

    相关文章

      网友评论

          本文标题:iOS屏幕旋转相关的问题

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