2

Comme vous le savez, quand je joue film avec MPMoviePlayerController, MoviePlayer devrait montrer un activityIndicatorView dans le centre de la moviePlayer'view. Maintenant, j'ai mis un activityIndicatorView personnalisé dans mon programme, je veux juste cacher ou supprimer le activityIndicatorView de MPMoviePlayController, puis-je faire cela?Cacher ActivityIndicator dans moviePlayerController

Répondre

7

oui nous pouvons!

Je suppose que ce que vous voulez faire est de montrer la idicator d'activité alors que votre film est en cours de chargement, pas pendant qu'il est en cours de lecture? Je suppose juste que et continuez ...

dans le SDK 3.2 et au-dessus, l'ensemble MPMoviePlayerController (et MPMoviePlayerViewController) sont beaucoup mieux que sur les versions précédentes. Si vous utilisez encore MPMoviePlayerController vous pourriez envisager de passer à MPMoviePlayerViewController (qui est essentiellement un UIView qui encapsule un Sous-objet MPMoviePlayerController).

de toute façon, pour afficher et masquer votre vue UIActivityindicator, je vous recommande de vous connecter aux notifications qui sont envoyées depuis votre MPMoviePlayerController lorsque la charge ou le statut de playstatus change.

quelques d'entre eux sont:

MPMoviePlayerPlaybackStateDidChangeNotification 
MPMoviePlayerLoadStateDidChangeNotification 

de sorte que vous accrochez à ces événements faisant:

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

et ce

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

et dans vos gestionnaires (playBackStateChanged et loadStateChanged)

vous pouvez faire quelque chose comme ceci:

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

    switch (playbackState) { 

     case MPMoviePlaybackStateStopped : 


      break; 

     case MPMoviePlaybackStatePlaying : 
      [yourActivityIndicatorView stopAnimating]; 
      break; 

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

assurez-vous que la propriété « hidesWhenStopped » (ou similaire) de votre IndicatorView est yes (si vous faites cela, vous ne devez pas se soucier de se cacher et démonter le contrôle.

le reste est simple, il suffit d'ajouter votre activityIndicatorView ontop de vue de votre MPMovieViewController.

espoir que je pourrais aider
hourras
sam

+0

je faire, ce que je veux laisser le activeIndicator du moviePlayerViewController ne montrent jamais, parce que je l'ai déjà ajouter un activeIndicator par moi-même – ben

+0

Ah je pense que je comprends tu sais. la solution consisterait à MASQUER votre lecteur jusqu'à ce que Loadstate du Movieplayer soit égal à MPMovieLoadStatePlayable, puis ré-afficher le lecteur. En attendant, vous pouvez afficher votre chargeur personnalisé. – samsam