デフォルトのコントロールを使用して、小さなフレーム内でビデオを再生する MPMoviePlayerController を作成しました。mediaplayer コントロールの「フルスクリーン」ボタンを押すと、すべて正常に動作します。ビデオはまだ再生されています。ビデオが終了したら、フルスクリーン ビューを閉じて、非フルスクリーン ビュー コントローラーに戻りたいと思います。
私のアプリは横向きのみです。「setFullscreen」プロパティをテストして、MPMoviePlayerPlaybackDidFinishNotification が呼び出されたときに元に戻すようにしました。これは機能します。しかし、間違っているポートレートからランドスケープへのビューの回転が表示されます。ランドスケープにランドスケープが必要なだけです。
なぜこれが起こるのですか?
self.moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
[self.moviePlayerController prepareToPlay];
[self.moviePlayerController setShouldAutoplay:YES];
self.moviePlayerController.movieSourceType = MPMovieSourceTypeFile;
self.moviePlayerController.fullscreen = NO;
self.moviePlayerController.scalingMode = MPMovieScalingModeAspectFit;
self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded;
[self.moviePlayerController.view setFrame: someMovieFrame];
[tempImageScrollView addSubview:self.moviePlayerController.view];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackCompletePSV:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:self.moviePlayerController];
[self.moviePlayerController play];
- (void) moviePlaybackCompletePSV:(NSNotification*) notification {
MPMoviePlayerController *mymoviePlayerController = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:mymoviePlayerController];
NSLog(@"PSV moviePlaybackComplete!");
// movie fadeout transition ====================
self.moviePlayerController.view.alpha = 1;
[UIView animateWithDuration:0.3f delay:0.0 options:UIViewAnimationCurveEaseOut
animations:^{
self.moviePlayerController.view.alpha = 0;
if ([self.moviePlayerController isFullscreen]) {
NSLog(@"PSV fullscreen movieplayer deleted");
[self.moviePlayerController setFullscreen:NO animated:NO];
}
}
completion:^(BOOL finished) {
[mymoviePlayerController stop];
[mymoviePlayerController.view removeFromSuperview];
[self.moviePlayerController.view removeFromSuperview];
self.moviePlayerController = nil;
}];
}