在 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 中旋转全屏视频时,导航栏和状态栏之间出现奇怪的重叠错误的主要内容,如果未能解决你的问题,请参考以下文章