4

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

首先将缩放模式设置为 MPmovieScalingmodefill 并将视频正确显示为缩放模式。

然后在我全屏查看视频并退出全屏之后,不要将缩放模式设置为 MPmovieScalingmodeFill 并以默认模式显示视频。

在我的视频播放代码下方

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

所以我的问题是如何在退出全屏后设置缩放模式或在退出屏幕后不更改缩放模式?

请帮帮我。

谢谢。

4

2 回答 2

0

我相信这会产生MPMoviePlayerScalingModeDidChangeNotification.

[[NSNotificationCenter defaultCenter] addObserver:self 
                selector:@selector(movieScalingModeDidChange:) 
                name:MPMoviePlayerScalingModeDidChangeNotification 
                object:nil];

MPMoviePlayerScalingModeDidChangeNotification

当电影播放器​​的缩放模式发生变化时发布。没有 userInfo 字典。缩放模式可以以编程方式或通过用户交互进行更改。要设置或检索电影播放器​​的缩放模式,请访问其 scalingMode 属性。状态已更改的电影播放器​​可用作与通知关联的对象。

于 2014-01-09T16:20:10.483 回答
0

这不是“理想”的解决方案,但它有效!基本上,一旦您退出全屏,MPMoviePlayerController 实例就会全部搞砸,并将缩放属性重置为 MPMovieScalingModeFill 无论何时何地都无济于事(我已经尝试了各种各样的东西,一个小时后放弃了)。最简单的解决方案是删除 MPMoviePlayerController 并在每次退出全屏时简单地分配一个新的 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];
}

PS:别忘了调用 super 的 viewDidAppear 或者遭受各种不可预见的混乱(iOS 开发中很常见的错误)

于 2014-02-23T20:43:44.950 回答