在应用程序中用到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. UIScrollView不能响应touch事件的解决办法

    UIScrollView本身事是不支持touch的,我们可以给她添加拓展 #import "UIScrollView+util.h" @implementation UIScrol ...

  2. <body>标签,网页上显示的内容放在这里

    在网页上要展示出来的页面内容一定要放在body标签中.如下图是一个新闻文章的网页. 在浏览器中的显示效果: 示例: <!DOCTYPE HTML> <html> <hea ...

  3. JS indexOf() lastIndexOf()与substring()截取字符串的区别

    1. String.IndexOf 方法 (value[,startIndex]) value:要查找的 Unicode 字符. 必选项startIndex:搜索起始位置.  可选项 不写从开头查找 ...

  4. VS2013安装过程截图

    ================================================================ VS 2013 中新增了很多提高开发人员工作效率的新功能,比如自动补全 ...

  5. hdu2524 (求矩形个数,水题。。。)

    hdu 2524 N - 暴力求解.打表 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  6. MVC linq语法分页

    分页效果图: 表格下面的分页按钮样式是我自己做的一个样式,这4个按钮都是用同一张图片:这张图片是用ps做的. 接下来我们说一下怎么去做这个样式 第一css代码: ._HomePage,._Previo ...

  7. socket函数

    为了执行网络IO,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型 int socket(int family,int type,int protocol); 其中,famil ...

  8. HTML CSS简介与图片映射

    1. CSS 入门 内联样式:在 HTML 元素中使用 “style” 属性,需要将表现与内容混在一起: 内部样式表:在 HTML 文档头部 <head> 区域使用 <style&g ...

  9. 不同浏览器使用Content-disposition时filename带空格的处理方式不同

    最近在做项目中遇到一个问题,纠结了好久才找到原因.起因:通过MIME的扩展Content-disposition来实现在客户端保存附加文件(快捷方式).问题:在chrome和IE8+下一切都很和谐,浏 ...

  10. cf C. Bits

    http://codeforces.com/contest/485/problem/C 利用位运算来解决这个题,从L开始,从每一位按位或,知道到达r位置,ans=ans|(1<<k);就可 ...