MPMoviePlayerController.viewをバックグラウンドとして使用しています。ユーザーはログインまたはサインアップをタップすることができ、フロー全体を通してmoviePlayer.viewがバックグラウンドとして残るように(つまり、現在アクティブなviewControllerに関係なくユーザーがビデオを見続けているように)明確な背景を持つ適切なviewControllerに移動します。iOS - MPMoviePlayerControllerは、リピート時にビュートランスフォームをリセットします。
一部のビューでは、キーボードがフィールドをカバーしないようにフォームを持ち上げる必要があります。私は変換を使ってこれをやっています。
moviePlayerの背景ビデオがリピートに設定されているため、ビデオは連続ループになります。ビデオがリセットされるたびに(ビデオのステータスが1から2に変わり、一時停止して再生されるまで)、トランスフォームは子viewController内でリセットされます。私の最初の考えは、ビューが再描画されたということでしたが、これはログに基づいているようには見えません(ビューのdrawRectにnslogを入れましたが、
誰かがこれを見かけますか?
ルートのViewControllerで私のセットアップ:
// 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];
}