[这是在Apple Developer Forums上发布的,但尚未得到回复,因此我将在此处尝试。]
我的应用程序使用iPad主/细节视图的UISplitViewController,并在iOS 6上运行。拆分视图控制器是其窗口的根视图控制器。详细视图主要由嵌入在UINavigationController中的UIWebView组成。细节视图中仅有的其他元素是导航控制器提供的工具栏和导航栏。当web视图显示具有嵌入的YouTube视频的页面时,用户可以使视频全屏显示。这一切都是由UIWebView完成的-我不负责创建一个全屏视频播放器。如果重要的是,一旦视频播放器被放置在全屏视图中,UIApplication共享实例的keyWindow在视频播放期间不是主应用程序窗口,而是MPFullScreenTransitionViewController的实例。
如果用户在全屏回放期间旋转设备,然后结束回放,则UISplitViewController无法正确放置其子项。方法
splitViewController:willHideViewController:withBarButtonItem:forPopoverController:和
splitViewController:willShowViewController:invalidatingBarButtonItem:代理(在本例中为局部视图控制器)的。
如果在播放全屏视频时将设备旋转到横向,则关闭影片播放器将导致显示细节视图控制器,该控制器保留以前的栏按钮项以在弹出窗口中绘制主视图控制器(尽管轻触该按钮不会产生任何动作)。在应该绘制主视图控制器的位置,只存在一个黑色区域。在细节视图控制器中向右滑动将滑出覆盖黑色区域的主视图控制器,但这仍然是一个弹出式视图,而不是持久视图。
如果在播放全屏视频时将设备旋转到纵向,则关闭电影播放器会导致显示缺少条形按钮项的细节视图控制器,以便在弹出窗口中绘制主视图控制器。局部视图控制器具有正确的宽度,并且主视图控制器不可见,因此局部视图的外观几乎与预期一样,只是缺少了条按钮项。
在这两种情况下,在出现不正确的视图后手动旋转设备将恢复正常的应用程序功能。然而,依靠用户旋转(或双旋转)设备来解决绘图问题显然是不可接受的。
当拆分视图控制器的所有子对象都消失在模式电影播放器后面时,有没有办法确保拆分视图控制器知道设备旋转?
发布于 2013-07-30 01:43:08
答案是由用户SamuraiZack在苹果开发者论坛上提出的。在UISplitViewController的代理中,强制重新布局viewWillAppear中的拆分视图控制器:
[self.splitViewController.view setNeedsLayout];
[self.splitViewController.view layoutIfNeeded];可以在Apple Developer forums上查看原始响应。
https://stackoverflow.com/questions/16672608
复制相似问题