zoukankan      html  css  js  c++  java
  • iOS7 MPMoviePlayerViewController 横屏显示

    在应用程序中用到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.   
    6. - (void)showStatusBar  
    7. {  
    8.     isHiddenStatusBar = NO;  
    9.     if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {  
    10.         [self prefersStatusBarHidden];  
    11.         [self setNeedsStatusBarAppearanceUpdate];  
    12.     }  
    13. }  
    14.   
    15. - (void)hideStatusBar  
    16. {  
    17.     isHiddenStatusBar = YES;  
    18.     if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {  
    19.         [self prefersStatusBarHidden];  
    20.         [self setNeedsStatusBarAppearanceUpdate];  
    21.     }  
    22. }  

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

     

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

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

     

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

    此文章出自http://blog.csdn.net/chchong1234/article/details/24649083感谢博主的分享~

  • 相关阅读:
    how to pass a Javabean to server In Model2 architecture.
    What is the Web Appliation Archive, abbreviation is "WAR"
    Understaning Javascript OO
    Genetic Fraud
    poj 3211 Washing Clothes
    poj 2385 Apple Catching
    Magic Star
    关于memset的用法几点
    c++ 函数
    zoj 2972 Hurdles of 110m
  • 原文地址:https://www.cnblogs.com/longyun/p/3700746.html
Copyright © 2011-2022 走看看