【问题标题】:Extend GCKUICastContainerViewController below the Home Indicator在 Home 指示器下方扩展 GCKUICastContainerViewController
【发布时间】:2018-06-21 05:08:15
【问题描述】:

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

我用GCKUICastContainerViewController包裹它后,Home Indicator背景区域变成黑色(而指示器是白色的)。

如何让这个 Container VC 在 home 指示器下方扩展它的子 VC(我的标签栏控制器)?

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

【问题讨论】:

标签: google-cast iphone-x


【解决方案1】:

是的,Google 似乎希望我们将GCKUICastContainerViewController 作为根视图控制器。当显示器底部有安全区域插入时,它看起来似乎有一些布局问题。

我通过在viewDidLayoutSubviews 中手动更改视图的框架解决了这个问题。你可以用这样的扩展来做到这一点

extension GCKUICastContainerViewController {

    open override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()

        if let window = UIApplication.shared.keyWindow {
            contentViewController?.view.frame = window.frame
        }
    }
}

这样您将摆脱屏幕底部的空间。对我有用。

【讨论】:

  • 这解决了初始布局,但是现在当迷你播放器出现时,应用内容无法正确调整大小。
【解决方案2】:
    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
            }
        } 
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多