2014-09-26 79 views
0

纵向应用程序加载横向显示的视频。在iOS8中使用横向正确状态栏播放横向视频内部纵向应用程序

在iOS7中所有的工作都很好(小修正了这个也是iOS6),但是在iOS8中状态栏虽然在横向上显示实际上显示的是纵向状态栏的大小,所以它只占据了左上角60%的视频如果在横向上保持装置)。

我正在使用的代码如下:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [planTitleLabel setText:[[ProgrammeHandler sharedHandler] 
          stringForElement:kPlanStringElementPlanTitle 
          onDay:0 inPlan:selectedPlan]]; 
} 

- (NSUInteger)supportedInterfaceOrientations{ 
    return 0; 
} 

-(void) viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 


    if ([[UIDevice currentDevice].systemVersion floatValue] < 7.0) { 
     [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:FALSE]; 
     [[UIApplication sharedApplication] setStatusBarHidden:TRUE withAnimation:UIStatusBarAnimationNone]; 
    }else if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0 && [[UIDevice currentDevice].systemVersion floatValue] < 9.0) { 
     [[UIApplication sharedApplication] setStatusBarHidden:TRUE]; 
    } 


    NSString *moviePath = [[ProgrammeHandler sharedHandler] pathForAsset:kAssetVideoIntro onDay:0 forPlan:selectedPlan]; 
    CGSize screenBounds = [[UIScreen mainScreen] bounds].size; 
    [whiteFadeView setFrame:CGRectMake(0, 0, screenBounds.width, screenBounds.height)]; 

    NSURL *videoURL = [NSURL fileURLWithPath:moviePath]; 
    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
    [[moviePlayer view] setBackgroundColor:[UIColor blackColor]]; 
    [moviePlayer setControlStyle:MPMovieControlStyleNone]; 
    [moviePlayer setScalingMode:MPMovieScalingModeAspectFill]; 
    //For viewing partially..... 
    moviePlayer.view.transform = CGAffineTransformMakeRotation(M_PI/2); 
    [moviePlayer setScalingMode:MPMovieScalingModeAspectFill]; 
    [movieView setAlpha:0]; 

    [moviePlayer.view setFrame:[movieView frame]]; 
    moviePlayer.view.backgroundColor = [UIColor blackColor]; 

    [movieView addSubview:moviePlayer.view]; 

    [moviePlayer prepareToPlay]; 
    [moviePlayer play]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(playbackFinished:) 
               name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(hideControl) 
               name:MPMoviePlayerLoadStateDidChangeNotification 
               object:moviePlayer]; 

    [UIView animateWithDuration:0.5f delay:0.50f 
         options:UIViewAnimationOptionCurveEaseIn 
        animations:^{[movieView setAlpha:1];} completion:^(BOOL fin){ }]; 
} 

- (void) hideControl { 
    [[NSNotificationCenter defaultCenter] removeObserver:self 
                name:MPMoviePlayerNowPlayingMovieDidChangeNotification 
                object:moviePlayer]; 
    [moviePlayer setControlStyle:MPMovieControlStyleFullscreen]; 
} 

我没有看到这个问题,但不认为它适用于我的情况。 iphone: rotation in mpmovieplayercontroller?

是否有人知道如何将状态栏恢复为全屏'宽度'?

回答

2

好的,今天再次看了这个之后,我注意到有一个错误,iOS7似乎很满意,但它正确地在iOS8中抛出一个错误。对于具有相同问题的其他人:

该修复只是将转换应用于moviePlayer本身而不是子视图。例如

替换 moviePlayer.view.transform = CGAffineTransformMakeRotation(M_PI/2); 与 movieView.transform = CGAffineTransformMakeRotation(M_PI/2);

+0

谢谢,帮了我很多。 – venkat 2017-05-02 10:06:55

相关问题