首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当被模式电影播放器覆盖时,UISplitViewController不能识别设备旋转

当被模式电影播放器覆盖时,UISplitViewController不能识别设备旋转
EN

Stack Overflow用户
提问于 2013-05-21 22:31:44
回答 1查看 789关注 0票数 3

[这是在Apple Developer Forums上发布的,但尚未得到回复,因此我将在此处尝试。]

我的应用程序使用iPad主/细节视图的UISplitViewController,并在iOS 6上运行。拆分视图控制器是其窗口的根视图控制器。详细视图主要由嵌入在UINavigationController中的UIWebView组成。细节视图中仅有的其他元素是导航控制器提供的工具栏和导航栏。当web视图显示具有嵌入的YouTube视频的页面时,用户可以使视频全屏显示。这一切都是由UIWebView完成的-我不负责创建一个全屏视频播放器。如果重要的是,一旦视频播放器被放置在全屏视图中,UIApplication共享实例的keyWindow在视频播放期间不是主应用程序窗口,而是MPFullScreenTransitionViewController的实例。

如果用户在全屏回放期间旋转设备,然后结束回放,则UISplitViewController无法正确放置其子项。方法

代码语言:javascript
复制
splitViewController:willHideViewController:withBarButtonItem:forPopoverController:

代码语言:javascript
复制
splitViewController:willShowViewController:invalidatingBarButtonItem:

代理(在本例中为局部视图控制器)的。

如果在播放全屏视频时将设备旋转到横向,则关闭影片播放器将导致显示细节视图控制器,该控制器保留以前的栏按钮项以在弹出窗口中绘制主视图控制器(尽管轻触该按钮不会产生任何动作)。在应该绘制主视图控制器的位置,只存在一个黑色区域。在细节视图控制器中向右滑动将滑出覆盖黑色区域的主视图控制器,但这仍然是一个弹出式视图,而不是持久视图。

如果在播放全屏视频时将设备旋转到纵向,则关闭电影播放器会导致显示缺少条形按钮项的细节视图控制器,以便在弹出窗口中绘制主视图控制器。局部视图控制器具有正确的宽度,并且主视图控制器不可见,因此局部视图的外观几乎与预期一样,只是缺少了条按钮项。

在这两种情况下,在出现不正确的视图后手动旋转设备将恢复正常的应用程序功能。然而,依靠用户旋转(或双旋转)设备来解决绘图问题显然是不可接受的。

当拆分视图控制器的所有子对象都消失在模式电影播放器后面时,有没有办法确保拆分视图控制器知道设备旋转?

EN

回答 1

Stack Overflow用户

发布于 2013-07-30 01:43:08

答案是由用户SamuraiZack在苹果开发者论坛上提出的。在UISplitViewController的代理中,强制重新布局viewWillAppear中的拆分视图控制器:

代码语言:javascript
复制
[self.splitViewController.view setNeedsLayout];
[self.splitViewController.view layoutIfNeeded];

可以在Apple Developer forums上查看原始响应。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16672608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档