2011-10-09 96 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

相關問題