Masquer ActivityIndicator dans moviePlayerController
-
13-09-2020 - |
Question
Comme vous le savez,quand je joue film avec MPmoviePlayerController ,le moviePlayer devrait montrer une activityIndicatorView dans le centre de la moviePlayer'view.Maintenant,j'ai mis une coutume activityIndicatorView dans mon programme,je veux juste cacher ou supprimer le activityIndicatorView de MPMoviePlayController,puis-je le faire ?
La solution
oui, nous pouvons!
Je suppose que ce que vous voulez faire est de montrer l'activité idicator alors que le film est en cours de chargement, pas alors qu'il est en train d'être joué?Je viens de supposer que, et continuer...
dans le SDK 3.2 et au-dessus, l'ensemble de la MPMoviePlayerController (et MPMoviePlayerViewController) sont beaucoup mieux que sur les versions précédentes.Si vous êtes toujours à l'aide de MPMoviePlayerController vous pourriez envisager de passer à MPMoviePlayerViewController (qui est en fait une sous-classe UIView que encapsules un MPMoviePlayerController Objet).
de toute façon, de montrer et de cacher votre UIActivityindicator vue, je vous recommande de vous brancher sur les notifications qui sont envoyés à partir de votre MPMoviePlayerController lorsque la charge - ou playstatus changement.
quelques-uns de ces sont:
MPMoviePlayerPlaybackStateDidChangeNotification
MPMoviePlayerLoadStateDidChangeNotification
si vous vous accrochez à ces événements pour ce faire:
[[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 à l'intérieur de vos gestionnairesplayBackStateChanged
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 le "hidesWhenStopped" (ou similaire) propriété de votre IndicatorView est réglé sur oui (si vous le faites, vous n'avez pas de soins sur le masquage et le démasquage le contrôle.
le reste est simple, il suffit d'ajouter votre activityIndicatorView ontop de votre MPMovieViewController de vue.
j'espère que je pourrais aider
cheers
sam