退出全屏MPMoviePlayerController后,将缩放模式设置为MPMoviesCalingMode填充ios

退出全屏MPMoviePlayerController后,将缩放模式设置为MPMoviesCalingMode填充ios,ios,mpmovieplayercontroller,Ios,Mpmovieplayercontroller,在我的应用程序中,我使用mpmovieplayercontroller播放视频 首先将缩放模式设置为MPMoviesCalingMode填充并将视频正确显示为缩放模式 然后,在我全屏观看视频并退出全屏后,再不将缩放模式设置为 MPMoviesCalingMode在解除模式下填充和显示视频 下面是我的视频播放代码 [[NSNotificationCenter defaultCenter] addObserver:self

在我的应用程序中,我使用mpmovieplayercontroller播放视频

首先将缩放模式设置为MPMoviesCalingMode填充并将视频正确显示为缩放模式

然后,在我全屏观看视频并退出全屏后,再不将缩放模式设置为 MPMoviesCalingMode在解除模式下填充和显示视频

下面是我的视频播放代码

[[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];
}