在 iPad 中旋转全屏视频时,导航栏和状态栏之间出现奇怪的重叠错误

Posted

技术标签:

【中文标题】在 iPad 中旋转全屏视频时,导航栏和状态栏之间出现奇怪的重叠错误【英文标题】:Strange overlapping bug between navigation and status bars when rotating fullscreen videos in iPad 【发布时间】:2011-10-05 23:04:03 【问题描述】:

我在我的应用程序中实现了一个视频播放器,当视频播放器全屏运行时旋转 iPad 时会发生奇怪的事情。

我的测试用例有点简单:

1.- 我将方向设置为垂直

2.- 我开始播放视频(非全屏)

3.- 我设置全屏

4.- 我在全屏时旋转 iPad 并将其设置为水平

5.- 我回到“非全屏”

6.- 导航和状态栏以一种非常愚蠢的方式重叠重叠。看:

7.- 然后我再次将 iPad 旋转到垂直

状态栏和导航栏不再重叠。再看一遍:

8.- 然后我来回旋转到水平和垂直,一切正常。

提示?

我已经阅读了一些其他问题,但我的脑海中没有明确的结论。 苹果(?)有一些“官方”修复程序承认某种错误,并尝试修复类似情况,例如:iPad rotation bug when using MPMoviePlayerViewController

但即使实现了那个简单的解决方案,我仍然会出现这个错误。 (我不知道这是否是一个错误,或者它甚至可能是一个功能(?))

我会尝试更多的混乱,但我们会非常欢迎帮助。

问候

【问题讨论】:

你能解决这个问题吗? 不!可悲的是,似乎没有人知道这里发生了什么…… 这件事发生在我身上,因为我同时隐藏了状态栏和导航栏,当我把导航栏带回来时,它仍然认为状态栏已经消失,所以它移动到了它的空间中。你是如何初始化你的视图的?如果您以编程方式执行此操作,有时我发现最好在 viewdidload 中执行此操作并将框架设置为应用程序框架,然后应用程序会很好地自行调整大小。 【参考方案1】:

在替换 rootViewController 之前取消隐藏状态栏可以解决这个错误

[UIApplication sharedApplication].statusBarHidden=NO; self.window.rootViewController = 随便

【讨论】:

【参考方案2】:

效果很好

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MovieSmallScreen) name:MPMoviePlayerDidExitFullscreenNotification object:MPplayer];

-(void)MovieSmallScreen




UIView *view123 = [[UIView alloc] 
                   initWithFrame:[[UIScreen mainScreen] applicationFrame]];


self.view.frame=view123.frame;

【讨论】:

【参考方案3】:

你可以试试这个代码

- (void)viewWillAppear:(BOOL)animated

    [UIApplication sharedApplication].statusBarHidden=YES;


【讨论】:

以上是关于在 iPad 中旋转全屏视频时,导航栏和状态栏之间出现奇怪的重叠错误的主要内容,如果未能解决你的问题,请参考以下文章

iOS导航栏和状态栏

iOS:状态栏和导航栏:空格或底层

在状态栏和导航栏之间添加图片

iOS 系统根据导航栏和状态栏自动修改布局

如何在视图控制器中的标签栏和导航栏上全屏显示弹出视图?

Android基础篇 显示隐藏状态栏和导航栏