2011-10-09 101 views
1

我试图在我的应用程序上显示视频。该应用隐藏了iPhone顶部面板。玩家似乎很好。只有一个恼人的问题:当播放器显示视频时,它有时会显示顶部面板,有时会隐藏它。当它被隐藏时,视频播放器面板被推入一点(与曾经在那里的面板尺寸相同)。是苹果的错误?难道我做错了什么? 这里是我的代码:播放视频时MPMoviePlayerViewController显示不佳

如果
- (void) showFullscreenMediaWithURL: (NSURL *) mediaURL 
{ 
    MPMoviePlayerViewController *ctrl = [[MPMoviePlayerViewController alloc] initWithContentURL: mediaURL]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(playbackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:ctrl.moviePlayer]; 
    ctrl.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
    ctrl.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [ctrl setWantsFullScreenLayout:YES]; 
    [self presentMoviePlayerViewControllerAnimated:ctrl]; 
    [ctrl release]; 
} 

-(void) playbackDidFinish:(NSNotification*)aNotification 
{ 
    NSLog(@"Finished playback"); 
    MPMoviePlayerController *player = [aNotification object]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification 
               object:player]; 
    [player stop]; 
    [self dismissMoviePlayerViewControllerAnimated]; 
    [[captureManager session] startRunning]; 

}

回答

0

通过iPhone顶部面板你指的是iPhone状态栏,那么解决方案应该是简单的。 就目前前/ dismissMoviePlayerViewControllerAnimated添加以下内容:

// Hide Status Bar   
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; 
// Show Status Bar 
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

更新:我可以看到什么似乎是你的问题。

首先,带网络指示图标和其他信息的上栏是status bar(没有别的)。你的问题似乎更多的是与MediaPlayer相关的ViewController。换句话说,如果你试图“推”一些其他ViewController到全屏(就像玩家一样),你将会遇到完全相同的问题。

其次,正确的方法,否则我可能会说:我的首选方式,加载一个视图控制器到全屏的是以下几点:

  1. 设置,这将在applicationDidFinishLaunchingWithOptions被装上全屏幕RootViewController的你的appDelegate。
  2. 在rootViewController init上放置您的默认viewController(您用来从appDelegate加载的那个)。确保rootViewController.view的框架正在填充屏幕。
  3. 在rootViewController上创建2条消息:LoadFullscreen:viewController和dismissFullscreen使用present/dismissModelViewController。应该从这里调用setStatusBarHidden消息。
  4. 要在全屏幕上播放播放器,创建播放器viewController并执行[rootViewController LoadFullscreen:player];

还有其他一些方法,但一般来说,这是我推荐的最佳实践和方法。这是相当“很多代码”来实现,这就是为什么我不能帮助你使用代码片断,但总的想法是相对简单的。

我希望这是帮助,E.G :)

+0

我试过了。它不起作用。我的整个应用程序不显示状态栏(它在应用程序启动时隐藏)。当显示视频时,我看到面板没有状态栏下推。当我点击屏幕时,状态栏显示。 – bashan

+0

对不起,仍然无法弄清楚你的意思。 iPhone模拟器的屏幕视频将是可爱的...您可以使用内置的quicktime – EladG

+0

我可以在这里发布图片附件?无论如何,这很简单:当看到视频时,你仍然可以看到iPhone顶部面板。有时它只是在那里,有时它不在那里,但是面板的空间就在那里。我不能真正隐藏顶部面板:要么有顶部面板,要么面板没有空间。顺便说一句,面板的空间,你也可以看到视频。 – bashan

相关问题