在应用程序中用到MPMoviePlayerViewController时,有时需要保持应用程序为竖屏状态,而视频播放器显示为横屏,如何做呢?如果采用强制横屏的方法,应用审核的时候是不会通过的,因为该方法已经被苹果禁止了。主要代码如下:

  1. - (void)addVideoViewController
  2. {
  3. MPMoviePlayerViewController *moviePlayerViewController = [[MPMoviePlayerViewController alloc] init];
  4. moviePlayerViewController.view.frame = CGRectMake(0, 0, self.view.bounds.size.height, self.view.bounds.size.width);
  5. moviePlayerViewController.view.center = CGPointMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2);
  6. CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);
  7. [moviePlayerViewController.view setTransform:transform];
  8. [self.view addSubview:moviePlayerViewController.view];
  9. }

MPMoviePlayerViewController加入到它的父ViewController中通过

CGAffineTransformMakeRotation()方法使得视频播放器旋转90度,这样就可以横屏了,如下图:

小伙伴们!看出问题来了没有,状态栏显示了俩个,这个怎么弄呢?

其实在IOS7中,每个ViewController都会带上一个StatusBar,上面的那个StatusBar是视频播放器带的,视频播放器旋转,状态栏也跟着旋转。左侧的StatusBar是视频播放器的父ViewController带的,因为父ViewController没有旋转,所以显示在左侧。解决这个问题就需要在显示播放器的时候隐藏左侧的StatusBar,退出播放器时显示左侧的StatusBar,具体方法如下:

IOS7中就需要用到如下俩个方法:

(1) - (BOOL)prefersStatusBarHiddenNS_AVAILABLE_IOS(7_0);

(2) - (void)setNeedsStatusBarAppearanceUpdateNS_AVAILABLE_IOS(7_0);

在父ViewController中重写- (BOOL)prefersStatusBarHidden方法,主要代码如下:

  1. - (BOOL)prefersStatusBarHidden
  2. {
  3. return isHiddenStatusBar;
  4. }
  5. - (void)showStatusBar
  6. {
  7. isHiddenStatusBar = NO;
  8. if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
  9. [self prefersStatusBarHidden];
  10. [self setNeedsStatusBarAppearanceUpdate];
  11. }
  12. }
  13. - (void)hideStatusBar
  14. {
  15. isHiddenStatusBar = YES;
  16. if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
  17. [self prefersStatusBarHidden];
  18. [self setNeedsStatusBarAppearanceUpdate];
  19. }
  20. }

(1) isHiddenStatusBar是定义的一个变量,判断是否隐藏StatusBar

(2) - (void)showStatusBar是自定义的一个方法,在需要显示状态栏的时候调用该方法

(3) - (void)hideStatusBar是自定义的一个方法,在需要隐藏状态栏的时候调用该方法

至此MPMoviePlayerViewController横屏显示功能就实现了。这是在IOS7上测试通过的结果,IOS6还没有找出相应的方法可以隐藏左侧的状态栏

http://blog.csdn.net/chchong1234/article/details/24649083?utm_source=tuicool

【转】IOS7 MPMoviePlayerViewController横屏显示的更多相关文章

  1. cocos2d-x在IOS7下面文字显示异常的解决办法 CGBitmapContextCreate: unsupported parameter combination

    首先定位到libs-->cocos2dx-->platform-->iOS-->CCImage.mm 找到这个文件. 打开CCImage.mm文件,定位到如下函数:   [cp ...

  2. 自定义的UIAlertView不能在iOS7上正常显示

    众所周知,当伟大的iOS7系统发布后,表扬的一堆.谩骂的也一片,而对于我们程序员来说最关心的莫过于低版本系统上的程序在搞版本系统上的兼容性问题了. 在iOS6.1几之前,当我们想要做一些提醒用户或临时 ...

  3. IOS 7 自定义的UIAlertView不能在iOS7上正常显示

    本文转载至 http://blog.csdn.net/hanbing861210/article/details/13614405 众所周知,当伟大的iOS7系统发布后,表扬的一堆.谩骂的也一片,而对 ...

  4. css3 移动端页面全屏旋转,横屏显示。

    css3旋转模拟手机横屏. 当手机不能自动旋转时,或有特殊需求.用css3 transform,实现横屏展示. 注意: 相关样式注意横屏的显示. touch的手势方向没有变,依旧是原来方向,若有相关插 ...

  5. iOS部分页面横屏显示

    在iOS系统支持横屏顺序默认读取plist里面设置的方向(优先级最高)等同于Xcode Geneal设置里面勾选application window设置的级别次之 然后是UINavigationcon ...

  6. 2.0.4 CCLabelTTF在ios7下不显示的问题

    要修改框架lib目录里的 CCImage.mm,就是把浮点值取了个整,之前的浮点形导致绘制失败: 在_initWithString这个方法里把如下代码替换一下就行了: //////////////// ...

  7. mui禁止横屏显示,仅支持竖屏显示

    mui.plusReady(function () { plus.screen.lockOrientation("portrait-primary"); });

  8. Android——横屏和竖屏的切换,以及明文密码的显示

    查看API文档: android.content.pm.ActivityInfo    在手机的使用中,我们要根据不同的需求来改变屏幕的显示方向,一般在浏览信息时是竖屏,在玩游戏的时候就要切换到横屏. ...

  9. IOS7学习之路二(处理ios6到ios7后UITableView的两个显示问题)

    1.在ios6开发的项目,当用ios7的虚拟机显示的时候会出现UINavigationItem遮挡TableView的问题: 下面是对比显示效果: 我的处理方法是: 在UITableViewContr ...

随机推荐

  1. 重温web服务器--细说Tomcat服务器

    从大学开始接触java web的开发时就开始使用tomcat部署web项目,对它的理解仅仅停留在"这是个开源免费的servlet容器"的阶段,后来也接触了一些tomcat的体系,原 ...

  2. javascript 操作符类型隐性转换

    javascript 操作符类型隐性转换 (一).一元操作符只能操作一个值的操作符叫做一元操作符1.递增和递减操作符a. 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作 ...

  3. Java笔试知识总结(第一回)

  4. bash shell学习-实践 (自己实现一些小工具)

    The poor starve while the rich feast. "穷人饥肠辘辘,富人大吃大喝" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版)  Linux S ...

  5. 下拉列表框 select 动态赋值

    <tr> <td class="label">所属群组:</td> <td> <select name="group ...

  6. 网络流的一个很厉害的ppt

    链接: http://pan.baidu.com/s/1dECtMpz 密码: hdbm

  7. Solr In Action 笔记(1) 之 Key Solr Concepts

    Solr In Action 笔记(1) 之 Key Solr Concepts 题记:看了下<Solr In Action>还是收益良多的,只是奈何没有中文版,只能查看英语原版有点类,第 ...

  8. Multiplication Table

    CF#256D:http://codeforces.com/contest/448/problem/D 题意:给你一个n*m的表格,第i行第j列的数据是i*j,然后询问第k小的数,这里的排序是不去重的 ...

  9. sql语句:union

     sql语句中,join,left join中,是将两个或多个表横向连接,而有时,我们需要将几个表或1个表纵向连接,甚至是连接自身,就比如,某些数据库脚本特别不合理的时候,但我们又不能说啥 ....郁 ...

  10. win7 清理系统

    1. 先用CCleaner等第三方软件清理一下.2. 将用户文件.我的文档.我的音乐.我的视频.桌面等路径更改到非系统分区(文件也会一并移动过去)3. 将系统盘的系统还原占用空间比减小,将大部分虚拟内 ...