我很难让它工作,而苹果开发者论坛也没有任何帮助。
我有一个播放视频的应用程序,当显示电影控件并旋转 iPad 时,状态栏会保持在方向开始之前视频所在的方向。然后在视图顶部有一个 20px 的间隙,而状态栏在另一个方向。
有没有人看到这个问题?
任何帮助将不胜感激。
我有同样的问题:
presentModalViewController
)。砰!我们的应用程序的布局被破坏(我们为每个方向做了一些自定义布局),并且状态栏在错误的位置,尽管在视频中位于正确的位置。
我做了两件事来解决这两个问题:
viewWillAppear
调用之后完成[super viewWillAppear];
。MPMoviePlayerDidExitFullscreenNotification
为and实现观察者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
步骤,并直接调用了状态栏设置,在我的情况下,它没有明显的区别(仍然闪烁)。
I had the same issue, plus my view was still screwed up after returning the movie player to windowed mode. I don't know how to fix this during fullscreen play, but at least after switching back to windowed you can fix up the status bar like this:
in the timer function do
[[UIApplication sharedApplication] setStatusBarOrientation:[[UIDevice currentDevice] orientation] animated:NO];