我的视频(AVPlayer 实例)在一个较小的“最小化”窗口中开始播放。触摸屏幕以显示控件,并允许用户将其扩展为全屏,覆盖状态栏。我给 viewController 这个全帧:
[[UIScreen mainScreen] bounds]
但是viewController仍然认为状态栏在那里,即使我先隐藏它:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]
因此视频屏幕从看不见的状态栏下方开始,位于 (0, statusBarHeight)。如果我在控件可见的情况下旋转设备(这使状态栏可见),问题仍然存在。如果我在控件被隐藏(并且状态栏丢失)时旋转设备,一切都会自行纠正,并且视频窗口按预期从 (0,0) 开始。
我的解决方案是在(0,-statusBarHeight)处启动全屏视频窗口,然后观察没有控件的旋转,然后我可以将视频窗口放回原点。呸。
当我将视频最小化回原始大小时,如果没有控件进行旋转,则视频窗口将过高(statusBarHeight)像素。
所以另一个布尔值告诉我,当我最小化视频时,如果我应该通过 (0, +statusBarHeight) 纠正它的“真实”位置。双呸。
如果此时我们旋转设备,一切都很好。但是,如果我们改为立即最大化视频,则全屏视频会高出 (statusBarHeight) 像素。三重呸!
好的,更多的布尔值,但这一切都因为视频引擎是一个单独的框架而变得复杂,并且“控制应用程序”也有类似的问题..啊!
我会以错误的方式解决这个问题吗?它变得太复杂和脆弱了。我知道(通过查看野外的其他应用程序)这是一个常见问题 - 我有一个表现出相同行为的应用程序列表。有没有更好的办法?