【发布时间】:2010-05-20 19:31:18
【问题描述】:
我很难让它工作,Apple 开发者论坛也没有任何帮助。
我有一个播放视频的应用程序,当显示电影控件并旋转 iPad 时,状态栏会保持在方向开始之前视频所处的方向。然后在视图顶部有一个 20px 的间隙,而状态栏在另一个方向。
有人见过这个问题吗?
任何帮助将不胜感激。
【问题讨论】:
-
听起来这属于超级用户。
我很难让它工作,Apple 开发者论坛也没有任何帮助。
我有一个播放视频的应用程序,当显示电影控件并旋转 iPad 时,状态栏会保持在方向开始之前视频所处的方向。然后在视图顶部有一个 20px 的间隙,而状态栏在另一个方向。
有人见过这个问题吗?
任何帮助将不胜感激。
【问题讨论】:
我遇到了同样的问题,而且在将电影播放器返回到窗口模式后,我的视图仍然搞砸了。我不知道如何在全屏播放期间解决此问题,但至少在切换回窗口后,您可以像这样修复状态栏:
在定时器函数中做
[[UIApplication sharedApplication] setStatusBarOrientation:[[UIDevice currentDevice]orientation] animated:NO];
【讨论】:
我遇到了同样的问题:
presentModalViewController显示)。砰!我们的应用程序的布局被破坏了(我们为每个方向做了一些自定义布局),并且状态栏在错误的位置,尽管在视频中位于正确的位置。
我做了两件事来解决这两个问题:
viewWillAppear 中完成的自定义配置在调用[super viewWillAppear]; 之后完成。MPMoviePlayerDidExitFullscreenNotification 和MPMoviePlayerPlaybackDidFinishNotification 实现观察者(在我的例子中,第一个在单击“完成”时从未被调用)。观察者回调的代码如下所示:
[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 步骤,并直接调用了状态栏设置,在我的情况下,它没有明显的区别(仍然闪烁)。
【讨论】: