Übernehmen Sie iOS 3.2 oder höher. Was ist die richtige Befehlsfolge, um einen Zug mit den anfangs verborgenen Steuerelementen zu spielen? Wenn der Film abgespielt wird, hat der Benutzer die Möglichkeit, auf dem Bildschirm zu markieren und Steuerelemente anzuzeigen.Wie kann die Steuerung ausgeblendet werden, bevor der MPMoviePlayerController-Film abgespielt wird?
Danke!
Meine (Kontrolle nicht versteckt) Code:
- (void)playMovie
{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Test" ofType:@"m4v"]];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
// Register to receive a notification when the movie has finished playing.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieDone:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieState:)
name:MPMoviePlayerNowPlayingMovieDidChangeNotification
object:moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieReady:)
name:MPMoviePlayerLoadStateDidChangeNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullScreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willExitFullScreen:) name:MPMoviePlayerWillExitFullscreenNotification object:moviePlayer];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishPlayback:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) {
moviePlayer.controlStyle = MPMovieControlStyleDefault; // MPMovieControlStyleNone MPMovieControlStyleEmbedded MPMovieControlStyleFullscreen MPMovieControlStyleDefault
moviePlayer.scalingMode = MPMovieScalingModeAspectFill; // MPMovieScalingModeAspectFit MPMovieScalingModeAspectFill
}
}
- (void) movieReady:(NSNotification*)notification
{
MPMoviePlayerController *moviePlayer = [notification object];
if ([moviePlayer loadState] != MPMovieLoadStateUnknown) {
// Remove observer
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerLoadStateDidChangeNotification
object:nil];
// When tapping movie, status bar will appear, it shows up
// in portrait mode by default. Set orientation to landscape
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
// Add movie player as subview
[[self view] addSubview:[moviePlayer view]];
// Play the movie
[moviePlayer play];
[moviePlayer setFullscreen:YES animated:YES];
}
}
Schöner Tipp. Ich habe auch festgestellt, dass, wenn ich den Steuerungsstil direkt nach Aufruf von play auf "MPMovieControlStyleFullscreen" setze, das gleiche Ergebnis erzielt. Vielleicht gibt es keinen Grund, eine willkürliche Verzögerung von einer Sekunde anzugeben? – curthipster
Eine Sekunde Verzögerung funktionierte auch für mich. Ich habe es eine halbe Sekunde versucht, aber das war zu schnell. –
Ja, ich brauche auch eine Verzögerung und frage mich immer noch, warum ich eine solche Verzögerung einführen muss. –