在主页指标

时间:2018-01-11 19:18:51

标签: google-cast iphone-x

我正在将GoogleCast集成到我的应用中。它的根视图控制器是UITabBarController,带有自定义白色标签栏。

GCKUICastContainerViewController包裹后,Home Indicator背景区变为黑色(指示符为白色)。

如何让这个Container VC将其子VC(我的标签栏控制器)扩展到主页指示器下面?

注意:我尝试过一种丑陋的解决方法,即设置castContainerVC.view.backgroundColor = .white。如果标签栏始终可见,这将起作用,但我的导航堆栈的某些部分可能会选择隐藏它。当它发生时,我会以白色的Home Indicator区域结束,但是所呈现的视图控制器在指示器上方的颜色是什么。

2 个答案:

答案 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
            }
        } 
    }