UIStatusBar +切换全帧视频+旋转=帧问题

时间:2012-11-07 16:07:48

标签: ios video screen-rotation uistatusbar

我的视频(AVPlayer实例)在较小的“最小化”窗口中播放以启动。触摸屏幕以显示控件,并允许用户将其展开到全屏,其中包含状态栏。我正在为它的全帧提供viewController:

[[UIScreen mainScreen] bounds]

但是viewController仍然认为状态栏在那里,即使我先隐藏它:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]

因此,视频屏幕从看不见的状态栏下方(0,statusBarHeight)开始。如果我在控件可见的情况下旋转设备(这会使状态栏可见),问题仍然存在。如果我在隐藏控件时旋转设备(并且状态栏丢失),则一切都会自行更正,视频窗口将按照预期从(0,0)开始。

我的解决方案是在(0,-statusBarHeight)启动全屏视频窗口,然后观察没有控件的旋转,然后我可以将视频窗口放回原点。呸。

当我将视频最小化回原始尺寸时,如果没有控制旋转,视频窗口将因(statusBarHeight)像素而过高。

另一个布尔告诉我,当我最小化视频时,如果我应该通过(0,+ statusBarHeight)纠正它的“真实”位置。双翘。

如果此时我们旋转设备,一切都很好。但如果我们立即最大化视频,那么全屏视频的(statusBarHeight)像素就太高了。三折!

好吧,更多的布尔,但由于视频引擎是一个单独的框架,而且“控制应用程序”也有类似的问题,这一切都变得复杂了...... AAH!

我是以错误的方式解决这个问题吗?它变得太复杂和脆弱了。我知道(通过查看其他应用程序)这是一个常见的问题 - 我有一个展示相同行为的应用程序列表。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我写了一个非常简单的应用程序来重新创建这个问题,并用了一个“技术支持事件”来询问Apple的开发者技术支持。他们建议我提交错误报告(ID 12685127)。他们说:

  

AVPlayer绝对不会考虑状态栏..

  

我担心我没有看到更好的解决方案,除了现在正在做的纠正这个问题。