在全屏模式下播放电影后查看大小调整

时间:2011-11-18 16:43:59

标签: iphone ios cocoa-touch uikit mpmovieplayercontroller

我正在开发一个相当标准的基于导航的iPhone应用程序,在某些屏幕上,有一个按钮可以在全屏模式下使用MPMoviePlayerController播放电影。视图顶部有一个导航栏。我看到电影播放后视图大小的一些奇怪的行为。想知道是否有其他人看过这个,以及是否有修复。这就是我所看到的:

  • 我将手机放在一个方向(人像或风景)
  • 我开始播放电影(以全屏模式播放)
  • 点按屏幕隐藏电影播放控件
  • 我将手机旋转到另一个方向(纵向到横向,反之亦然)
  • 点按屏幕以恢复播放控件,然后点按“完成”按钮

此时,原始视图以新方向返回到屏幕上。但是,视图的大小不适合容纳屏幕顶部的状态栏。状态栏遮盖了导航栏的一部分。此时旋转手机可以解决问题。

如果我按照相同的顺序,但没有隐藏播放控件,一切正常,当我关闭电影时原始视图的大小正确。

有人知道可能导致这种情况的原因吗?

此外,这似乎很容易重现。我正在使用Xcode4.2和5.0 SDK。如果您使用“Master-Detail Application”模板创建一个新的仅iPhone项目,并进行这些更改,您可以看到问题发生:

首先,将以下代码添加到MasterViewController.m。

- (void) moviePlayBackDidFinish:(NSNotification*)notification
{
    MPMoviePlayerController *moviePlayer = [notification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
    [moviePlayer.view removeFromSuperview];
    [moviePlayer release];
}

- (void) playStory
{
    NSURL *movieURL = [NSURL URLWithString:@"http://double-apps.com/thisisatest.m4v"];
    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];

    // Register to receive a notification when the movie has finished playing.
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];

    moviePlayer.shouldAutoplay = YES;
    [self.view addSubview:moviePlayer.view];
    [moviePlayer setFullscreen:YES animated:YES];
}

然后,用[self playStory]替换didSelectRowAtIndexPath方法的内容:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self playStory];
}

就是这样,运行应用程序,点击主屏幕中的“详细信息”条目,然后按照上面列出的顺序。

0 个答案:

没有答案