在视频播放期间,iPad状态栏在旋转后粘滞

时间:2010-05-20 19:31:18

标签: video ipad statusbar

我正在努力工作,Apple开发者论坛一直没有帮助。

我有一个播放视频的应用程序,当显示电影控件并旋转iPad时,状态栏会在方向开始前坚持视频所在的方向。然后在视图顶部有一个20px的间隙,而状态栏在另一个方向。

有没有人见过这个问题?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,而且在将电影播放器​​恢复到窗口模式后,我的观点仍然被搞砸了。我不知道如何在全屏播放期间解决这个问题,但至少在切换回窗口后你可以修改状态栏,如下所示:

  • 注册MPMoviePlayerWillExitFullscreenNotification
  • 的观察员
  • 在通知回调函数中,启动NSTimer以稍后调用另一个函数(如0.1s)
  • 定时器功能
  • 执行

    [[UIApplication sharedApplication] setStatusBarOrientation:[[UIDevice currentDevice] orientation] animated:NO];

答案 1 :(得分:2)

我遇到了同样的问题:

  • 以肖像方式启动应用程序(例如)
  • 启动视频播放器(我们的显示使用presentModalViewController)。
  • 旋转iPad
  • 按“完成”退出视频。

的Bam!我们的应用程序布局被破坏了(我们为每个方向做了一些自定义布局),状态栏位于错误的位置,尽管在视频中位于正确的位置。

我做了两件事来解决这两个问题:

  • 确保我们在viewWillAppear完成的自定义配置是在调用[super viewWillAppear];之后完成的。
  • MPMoviePlayerDidExitFullscreenNotificationMPMoviePlayerPlaybackDidFinishNotification实现观察者(在我的案例中点击'完成'时,第一个从未被调用过。)

观察者回调的代码如下所示:

[self performSelector: @selector(checkAndFixStatusBar)
           withObject: nil
           afterDelay: 0];

[[NSNotificationCenter defaultCenter] removeObserver: self];

最后一种方法,在故意延迟0后调用:

- (void)checkAndFixStatusBar
{
    UIInterfaceOrientation intOrient = self.interfaceOrientation;
    UIInterfaceOrientation sbOrient = [[UIApplication sharedApplication] statusBarOrientation];

    if (intOrient != sbOrient)
    {
        [[UIApplication sharedApplication] setStatusBarOrientation: intOrient animated: NO];
        NSLog(@"Fixed status bar orientation"); 
    }
}

仍然可以看到状态栏的闪烁,但这是我想出的最佳状态。

希望这有帮助。

编辑:我已删除了performSelector步骤,并直接调用状态栏设置,在我的情况下,它没有明显的区别(仍在闪烁)。