0

我的视频(AVPlayer 实例)在一个较小的“最小化”窗口中开始播放。触摸屏幕以显示控件,并允许用户将其扩展为全屏,覆盖状态栏。我给 viewController 这个全帧:

[[UIScreen mainScreen] bounds]

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

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

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

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

当我将视频最小化回原始大小时,如果没有控件进行旋转,则视频窗口将过高(statusBarHeight)像素。

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

如果此时我们旋转设备,一切都很好。但是,如果我们改为立即最大化视频,则全屏视频会高出 (statusBarHeight) 像素。三重呸!

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

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

4

1 回答 1

0

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

AVPlayer 绝对没有考虑到状态栏..

恐怕我没有看到更好的解决方案,除了像你现在所做的那样纠正这个..

于 2012-11-12T21:27:47.883 回答