zoukankan      html  css  js  c++  java
  • iOS在不支持横屏情况下,实现播放器全屏播放

        在使用MPMoviePlayerController实现播放器播放时,发现不能全屏播放,原来是因为项目不支持横屏,把支持横屏的选项勾住就OK啦,但是其他页面不支持横屏,这个方法就行不通了。

        在网上找了很多的资料,很多都是在iOS 6之后就舍弃的,都没用,下面我就来介绍下,在不支持横屏的情况下,实现视频播放器的全屏播放。

    1、

        首先在AppDelegate.h 定义@property (nonatomic, assign) BOOL allowRotation; // 标记是否可以旋转

    2、

        同时在AppDelegate.m中实现这个方法,需要返回个支持屏幕转向,做个简单的判断,是否支持横竖屏,是的话返回UIInterfaceOrientationMaskAll,否则返回UIInterfaceOrientationMaskPortrait。返回的是个枚举,其中各种值的意思这里不做介绍了。

    - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)nowWindow {   

    //    是非支持横竖屏

        if (_allowRotation) {

            return UIInterfaceOrientationMaskAll;  

        } else{

            return UIInterfaceOrientationMaskPortrait;

        }

    }

    3、

        在需要全屏的控制器中需要设置 allowRotation为YES,然后就可以实现横竖屏的自动转换了。

        AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

        appDelegate.allowRotation = YES;

    4、

        注意在返回其他界面时,要设置allowRotation为NO.

    //    设置不支持横屏

        AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

        appDelegate.allowRotation = NO;

    5、

        还有个问题需要注意,当横屏的时候,可能会出现导航条,这时要是按下返回按钮或者去其他界面的按钮,到了其他界面也是横屏。所以要在横屏播放视频的时候,隐藏导航条。我用的是通知隐藏导航条,有其他的方法也行,欢迎提出。

        首先回到AppDelegate.m文件中刚才的协议代理方法中添加通知

    //    添加通知 横屏不出现导航条

        [[NSNotificationCenter defaultCenter] postNotificationName:@"hideNav" object:nil];

        然后在需要横屏的那个播放器的控制器中接受通知,实现方法,当横屏时候,隐藏导航条。在这里需要做个横竖屏的判断,我是根据屏幕的宽高来判断的,同样也有很多其他的方法都可以实现。

    //    接受通知 判断导航条是否隐藏

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideN) name:@"hideNav" object:nil];

    #pragma mark - 接受通知 判断导航条是否隐藏

    - (void)hideN{    

        if ([UIScreen mainScreen].bounds.size.width > [UIScreen mainScreen].bounds.size.height) {

    //        横屏隐藏

            self.navigationController.navigationBarHidden = YES;

        }else{

    //        竖屏显示

            self.navigationController.navigationBarHidden = NO;

        }

    }

        好了,这下就解决了在不支持横屏时,可以全屏播放的功能了,希望可以帮到大家。 

        

  • 相关阅读:
    C# 代码中调用 Javascript 代码段以提高应用程序的配置灵活性(使用 Javascript .NET 与 Jint)
    非软件行业公司自建软件开发部门能力不强的原因分析
    编程经验点滴----巧妙解决 Oracle NClob 读写问题
    编程经验点滴----在 Oracle 数据库中保存空字符串
    这几天上海移动网络可以直接打开 Google Play 了
    品牌电脑硬盘损坏后,使用MediaCreationTool从微软官方下载正版Windows到USB做安装盘
    编程经验点滴----使用接口表保存可能并发的业务,然后顺序处理
    生产打印系统的一些汇总--商业合同方面
    生产打印系统的一些汇总--概要
    外观模式
  • 原文地址:https://www.cnblogs.com/ladyotao/p/5674194.html
Copyright © 2011-2022 走看看