Objective c MPMoviePlayerViewController不';播放视频时显示不好

Objective c MPMoviePlayerViewController不';播放视频时显示不好,objective-c,video,mpmovieplayercontroller,Objective C,Video,Mpmovieplayercontroller,我正在尝试在我的应用程序上显示视频。该应用程序隐藏了iPhone的顶部面板。这名运动员似乎工作得很好。只有一个恼人的问题:当播放器播放视频时,它有时会显示顶部面板,有时会隐藏它。当它被隐藏时,视频播放器面板会被推一点(与以前的面板大小相同)。是苹果虫吗?我做错什么了吗? 这是我的密码: - (void) showFullscreenMediaWithURL: (NSURL *) mediaURL { MPMoviePlayerViewController *ctrl = [[MPMovi

我正在尝试在我的应用程序上显示视频。该应用程序隐藏了iPhone的顶部面板。这名运动员似乎工作得很好。只有一个恼人的问题:当播放器播放视频时,它有时会显示顶部面板,有时会隐藏它。当它被隐藏时,视频播放器面板会被推一点(与以前的面板大小相同)。是苹果虫吗?我做错什么了吗? 这是我的密码:

- (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];

}

如果iPhone顶部面板指的是iPhone状态栏,那么解决方案应该很简单。 在显示/解除MoviePlayServiceController激活之前,添加以下内容:

// Hide Status Bar        
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
// Show Status Bar
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
更新:我能看出你的问题所在

首先,带有网络指示图标和其他信息的上栏是(除此之外没有其他信息)。您的问题似乎比MediaPlayer更与ViewController相关。换句话说,如果您试图“推”其他一些ViewController到全屏(就像播放器一样),您将遇到完全相同的问题

其次,将视图控制器加载到全屏的正确方法,或者我可以说:我首选的方法如下:

// Hide Status Bar        
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
// Show Status Bar
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
  • 设置全屏rootViewController,该控制器将加载到appDelegate上的ApplicationIDFinishLaunchingWithOptions上
  • 在rootViewController init上放置默认的viewController(用于从appDelegate加载的)。确保rootViewController.view的框架正在填充屏幕
  • 使用present/dismissModelViewController在rootViewController:LoadFullscreen:viewController和dismissFullscreen上创建两条消息。应从此处调用setStatusBarHidden消息
  • 要在全屏上使用播放器,请创建播放器viewController并执行[rootViewController LoadFullscreen:player] 还有其他一些方法,但一般来说,这是最佳实践,也是我推荐的方法。要实现的代码相对来说“很多”,这就是为什么我不能帮助您使用代码狙击手的原因,但总体思路相对简单


    我希望这会有帮助,例如:)

    我已经试过了。它不起作用。我的整个应用程序不显示状态栏(当应用程序启动时它是隐藏的)。当显示视频时,我看到面板被按下,没有状态栏。当我点击第一屏时,状态栏显示出来。对不起,我还是不明白你的意思。一个iPhone模拟器的屏幕视频会很可爱。。。您可以使用内置的quicktime,我可以在这里发布图像附件吗?无论如何,这很简单:当你看到视频时,你仍然可以看到iPhone的顶部面板。有时它只是在那里,有时它不在那里,但面板的空间就在那里。我无法真正隐藏顶部面板:要么有顶部面板,要么没有空间放置面板。顺便说一下,在面板的空间上,你也可以看到视频。