2

如您所知,當我使用MPmoviePlayerController播放影片時,moviePlayer應在moviePlayer'view的中心顯示一個activityIndi​​catorView。現在,我已將一個自定義activityIndi​​catorView放入我的程序中,我只想隱藏或移除MPMoviePlayController的activityIndi​​catorView,我可以這樣做嗎?隱藏MoviePlayerController中的ActivityIndi​​cator

回答

7

是的,我們可以!

我想你想要做的是在你的電影被加載時顯示活動idicator,而不是當它被播放時?我只是假設並繼續...在SDK 3.2及更高版本中,整個MPMoviePlayerController(和MPMoviePlayerViewController)比以前的版本好很多。如果你仍然使用MPMoviePlayerController,你可以考慮切換到MPMoviePlayerViewController(它基本上是一個包裝MPMoviePlayerController對象的UIView子類)。無論如何,爲了顯示和隱藏你的UIActivityindicator視圖,我建議你掛載到MPMoviePlayerController在負載或playstatus更改時發送的通知。

其中的幾個是:

MPMoviePlayerPlaybackStateDidChangeNotification 
MPMoviePlayerLoadStateDidChangeNotification 

所以你掛接到這些事件這樣做:

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

[[NSNotificationCenter defaultCenter] addObserver: self 
              selector: @selector(playBackStateChanged:) 
               name: MPMoviePlayerPlaybackStateDidChangeNotification 
               object: moviePlayerViewController.moviePlayer]; 

和您的處理程序中(playBackStateChangedloadStateChanged

你可以做這樣的事情:

-(void)playBackStateChanged:(id)sender 
{ 
    MPMoviePlaybackState playbackState = [moviePlayerViewController.moviePlayer playbackState]; 

    switch (playbackState) { 

     case MPMoviePlaybackStateStopped : 


      break; 

     case MPMoviePlaybackStatePlaying : 
      [yourActivityIndicatorView stopAnimating]; 
      break; 

     case MPMoviePlaybackStateInterrupted : 
      [yourActivityIndicatorView startAnimating]; 
      break; 
    } 
} 

確保「hidesWhenStopped」(或類似)你IndicatorView的屬性被設置爲yes(如果你這樣做,你不必關心和隱藏取消隱藏控制。

其餘的很簡單,只需在您的MPMovieViewController視圖中添加您的activityIndi​​catorView ontop即可。

希望我能幫助
歡呼
SAM

+0

我這樣做,我只想讓moviePlayerViewController的activeIndicator從不顯示,因爲我已經被自己 – ben 2010-07-10 01:33:44

+0

阿添加activeIndicator我想我明白你現在。解決辦法是隱藏你的播放器,直到Movieplayer的Loadstate等於MPMovieLoadStatePlayable,然後再次取消播放器。同時您可以顯示您的自定義加載程序。 – samsam 2010-07-14 09:16:06

相關問題