退出全屏MPMoviePlayerController后,将缩放模式设置为MPMoviesCalingMode填充ios
在我的应用程序中,我使用mpmovieplayercontroller播放视频 首先将缩放模式设置为MPMoviesCalingMode填充并将视频正确显示为缩放模式 然后,在我全屏观看视频并退出全屏后,再不将缩放模式设置为 MPMoviesCalingMode在解除模式下填充和显示视频 下面是我的视频播放代码退出全屏MPMoviePlayerController后,将缩放模式设置为MPMoviesCalingMode填充ios,ios,mpmovieplayercontroller,Ios,Mpmovieplayercontroller,在我的应用程序中,我使用mpmovieplayercontroller播放视频 首先将缩放模式设置为MPMoviesCalingMode填充并将视频正确显示为缩放模式 然后,在我全屏观看视频并退出全屏后,再不将缩放模式设置为 MPMoviesCalingMode在解除模式下填充和显示视频 下面是我的视频播放代码 [[NSNotificationCenter defaultCenter] addObserver:self
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(ExitFullScreen:)
name:MPMoviePlayerWillExitFullscreenNotification object:nil];
[appDelegate.moviePlayerController setContentURL:fileURL];
if ([appDelegate checkDevice])
{
[appDelegate.moviePlayerController.view setFrame:CGRectMake(0,0, 320,463)];
}
else
{
[appDelegate.moviePlayerController.view setFrame:CGRectMake(0,0, 320,375)];
}
[appDelegate.moviePlayerController prepareToPlay];
appDelegate.moviePlayerController.scalingMode=MPMovieScalingModeFill;
appDelegate.moviePlayerController.controlStyle=MPMovieControlStyleDefault;
appDelegate.moviePlayerController.shouldAutoplay=NO;
[appDelegate.moviePlayerController setFullscreen:YES animated:YES];
[appDelegate.moviePlayerController play];
[self.view addSubview:appDelegate.moviePlayerController.view];
- (void)ExitFullScreen:(NSNotification *)notification{
NSLog(@"Exit full Screen");
[appDelegate.moviePlayerController setControlStyle:MPMovieControlStyleEmbedded];
[appDelegate.moviePlayerController setScalingMode:MPMovieScalingModeFill];}
所以我的问题是,如何在退出全屏后设置缩放模式,或者在退出全屏后不更改缩放模式
请帮帮我
谢谢。我相信这将生成
MPMoviePlayerScalingModedDidChangeNotification
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieScalingModeDidChange:)
name:MPMoviePlayerScalingModeDidChangeNotification
object:nil];
MPMoviePlayerScalingModedChangeNotification
当电影播放器的缩放模式更改时发布。没有用户信息字典。缩放模式可以通过编程或通过用户交互进行更改。要设置或检索电影播放器的缩放模式,请访问其scalingMode属性。状态已更改的电影播放器可用作与通知关联的对象。这不是“理想”的解决方案,但它可以工作!
基本上,一旦退出全屏,MPMoviePlayerController实例就会变得一团糟,将scaling属性重置为MPMovieScalingModeFill将不会有任何帮助,无论何时何地(我尝试了各种方法,一个小时后就放弃了)。最简单的解决方案是移除MPMoviePlayerController,并在每次退出全屏时分配一个新的MPMoviePlayerController实例(不理想,但完全有效):
PS:别忘了打电话给super的ViewDidEmerge或遭受各种不可预见的混乱(iOS开发中的一个非常常见的错误)您找到了解决方案吗?我被困在相同的情况下,在退出全屏模式后,它会从填充模式更改缩放模式。有人解决了这个问题吗?您阅读了示例代码了吗?他们在第3行注册了通知。但是视频播放将重置,不是吗?如果这是一个问题,请在删除旧的电影播放器之前使用MPMoviePlayerController的currentPlaybackTime属性,然后使用setInitialPlaybackTime将新的MPMoviePlayerController设置为该值。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:NO];
if (self.moviePlayer != nil)
[self.moviePlayer.view removeFromSuperview];
self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:self.videoURL];
self.moviePlayer.view.frame = CGRectMake(#, #, #, #);
self.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
self.moviePlayer.shouldAutoplay = NO;
[self.moviePlayer setContentURL:self.videoURL];
[self.moviePlayer prepareToPlay];
[self.moviePlayer setScalingMode:MPMovieScalingModeFill];
[self.view addSubview:self.moviePlayer.view];
}