【问题标题】:UIStatusBar + toggling full frame video + rotations = frame problemsUIStatusBar + 切换全帧视频 + 旋转 = 帧问题
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 2020-05-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多