Frage

Wie Sie wissen, sollte der MoviePlayer beim Abspielen eines Films mit MPmoviePlayerController einen ActivityIndicatorView in der Mitte der MoviePlayer-Ansicht anzeigen.Jetzt habe ich eine benutzerdefinierte Aktivitätsindikatoransicht in mein Programm eingefügt. Ich möchte nur die Aktivitätsindikatoransicht von MPMoviePlayController ausblenden oder entfernen. Kann ich das tun?

War es hilfreich?

Lösung

ja wir können!

Ich denke, Sie möchten die Aktivitätsanzeige anzeigen, während Ihr Film geladen wird, und nicht, während er abgespielt wird?Ich gehe einfach davon aus und mache weiter...

In SDK 3.2 und höher sind der gesamte MPMoviePlayerController (und MPMoviePlayerViewController) viel besser als in früheren Versionen.Wenn Sie immer noch MPMoviePlayerController verwenden, sollten Sie einen Wechsel zu MPMoviePlayerViewController in Betracht ziehen (was im Grunde eine UIView-Unterklasse ist, die ein MPMoviePlayerController-Objekt kapselt).

Wie auch immer, um Ihre UIActivityindicator-Ansicht ein- und auszublenden, würde ich Ihnen empfehlen, sich mit Benachrichtigungen zu verbinden, die von Ihrem MPMoviePlayerController gesendet werden, wenn sich der Lade- oder Wiedergabestatus ändert.

einige davon sind:

MPMoviePlayerPlaybackStateDidChangeNotification
MPMoviePlayerLoadStateDidChangeNotification 

Sie verbinden sich also mit diesen Ereignissen, indem Sie Folgendes tun:

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

und das

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

und innerhalb Ihrer Handler (playBackStateChanged Und loadStateChanged)

Sie können so etwas tun:

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

    switch (playbackState) {

        case MPMoviePlaybackStateStopped :


            break;

        case MPMoviePlaybackStatePlaying :
            [yourActivityIndicatorView stopAnimating];
            break;

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

Stellen Sie sicher, dass die Eigenschaft „hidesWhenStopped“ (oder eine ähnliche Eigenschaft) Ihrer IndicatorView auf „Ja“ gesetzt ist (wenn Sie das tun, müssen Sie sich nicht um das Aus- und Einblenden des Steuerelements kümmern).

Der Rest ist einfach: Fügen Sie einfach Ihre Aktivitätsindikatoransicht über der Ansicht Ihres MPMovieViewControllers hinzu.

Ich hoffe, ich konnte helfen
Prost
Sam

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top