Verwenden Sie eine MPMoviePlayerController.view als Hintergrund (think spotify). Ein Benutzer kann auf Anmeldung oder Anmeldung tippen und sie werden zum entsprechenden viewController geleitet, der über einen klaren Hintergrund verfügt, so dass die moviePlayer.view im Hintergrund bleibt (dh der Benutzer sieht das Video unabhängig vom aktuell aktiven viewController) .iOS - MPMoviePlayerController setzt die Ansichts-Transformation bei Wiederholung zurück
Bei einigen ViewControllern muss das Formular angehoben werden, damit die Tastatur das Feld nicht abdeckt. Ich mache das mit einer Transformation.
Das Hintergrundvideo des moviePlayers wird auf "Wiederholen" gesetzt, sodass das Video in einer Endlosschleife wiedergegeben wird. Jedes Mal, wenn das Video zurückgesetzt wird (der Video-Status wechselt von 1 zu 2 - Pause bis zur Wiedergabe), wird die Transformation in der untergeordneten Ansicht zurückgesetzt. Mein erster Gedanke war, dass die Ansicht neu gezeichnet wurde, aber das scheint nicht der Fall zu sein, basierend auf Protokollen (ich habe nslogs in die drawRect der Ansichten geschrieben, aber es wird nur einmal bei der Instantiierung aufgerufen).
Ist jemand auf dieses gestoßen?
Mein Setup im Stammviewcontroller:
// lazy load moviePlayer
-(MPMoviePlayerController *)moviePlayer
{
if (_moviePlayer) return _moviePlayer;
NSURL *videoURL = [[NSBundle mainBundle] URLForResource:@"resources.bundle/videos/auth_bg" withExtension:@"mp4"];
_moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
_moviePlayer.controlStyle = MPMovieControlStyleNone;
_moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
_moviePlayer.repeatMode = MPMovieRepeatModeOne;
_moviePlayer.shouldAutoplay = true;
return _moviePlayer;
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
self.moviePlayer.view.frame = self.view.frame;
self.moviePlayer.view.hidden = false;
// 'still' is an imageView of the first frame to show while video loading
[self.navigationController.view insertSubview:self.moviePlayer.view aboveSubview:still];
}