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