我正在将GoogleCast集成到我的应用中。它的根视图控制器是UITabBarController
,带有自定义白色标签栏。
用GCKUICastContainerViewController
包裹后,Home Indicator背景区变为黑色(指示符为白色)。
如何让这个Container VC将其子VC(我的标签栏控制器)扩展到主页指示器下面?
注意:我尝试过一种丑陋的解决方法,即设置castContainerVC.view.backgroundColor = .white
。如果标签栏始终可见,这将起作用,但我的导航堆栈的某些部分可能会选择隐藏它。当它发生时,我会以白色的Home Indicator区域结束,但是所呈现的视图控制器在指示器上方的颜色是什么。
答案 0 :(得分:0)
是的,看来Google希望我们将GCKUICastContainerViewController
作为根视图控制器。当显示屏底部有安全区域插入时,似乎有一些布局问题。
我通过在viewDidLayoutSubviews
中手动更改视图的框架来解决此问题。您可以使用这样的扩展名
extension GCKUICastContainerViewController {
open override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if let window = UIApplication.shared.keyWindow {
contentViewController?.view.frame = window.frame
}
}
}
这样,您将摆脱屏幕底部的空间。为我工作。
答案 1 :(得分:0)
extension GCKUICastContainerViewController {
open override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if let window = UIApplication.shared.keyWindow, miniMediaControlsViewController?.view.bounds.height ?? 0 == 0 {
contentViewController?.view.frame = window.frame
} else {
contentViewController?.view.frame = (view.subviews.first! as UIView).frame
}
}
}