iPhone X - 设置主页指示器周围区域的颜色

Posted

技术标签:

【中文标题】iPhone X - 设置主页指示器周围区域的颜色【英文标题】:iPhone X - Set the color of the area around home indicator 【发布时间】:2017-10-23 03:43:11 【问题描述】:

在尝试将工作表与 iPhone X 的安全区域对齐时,我对 Xcode 非常陌生,它会在工作表下方留下一个透明区域。

有没有办法在不扩展工作表的情况下设置该区域的填充或在安全区域之外对齐?

【问题讨论】:

【参考方案1】:

这是我的小扩展。 如果有人可以建议改进以不通过“幻数”标签访问添加的视图 - 欢迎!

extension UIViewController 

private static let insetBackgroundViewTag = 98721 //Cool number

func paintSafeAreaBottomInset(withColor color: UIColor) 
    guard #available(ios 11.0, *) else 
        return
    
    if let insetView = view.viewWithTag(UIViewController.insetBackgroundViewTag) 
        insetView.backgroundColor = color
        return
    

    let insetView = UIView(frame: .zero)
    insetView.tag = UIViewController.insetBackgroundViewTag
    insetView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(insetView)
    view.sendSubview(toBack: insetView)

    insetView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    insetView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    insetView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    insetView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true

    insetView.backgroundColor = color

【讨论】:

【参考方案2】:

是的,这不是一个好主意,但可以解决您的问题。

按照以下步骤操作:

启用“安全区域布局” 使用与工作表颜色相同的背景颜色创建/添加视图(即命名为 bottomPaddingView)(以编程方式或使用情节提要)。 定位它(使用以下约束 - 以下约束不是代码结构,而只是显示约束/锚关系) - bottomPaddingView.bottom = self.view.bottom - bottomPaddingView.trailing = self.view.trailing - bottomPaddingView.leading = self.view.leading - bottomPaddingView.top = self.view.safeAreaLayoutConstraint.bottom // 如果您启用了“安全区域布局” - bottomPaddingView.top = self.view.bottomLayoutguide // 如果你没有启用“安全区域布局”

现在隐藏/取消隐藏您的 bottomPaddingView 与淡入淡出动画的行动可见性有关。

【讨论】:

以上是关于iPhone X - 设置主页指示器周围区域的颜色的主要内容,如果未能解决你的问题,请参考以下文章

iPhone X 设计适配指南 & iOS 11 新特性

UITableview 与 iPhone X 上的主页指示器合并

如何检测 iPhone X 主页指示灯?

iPhone X 主页指示灯行为

自定义 UIToolbar 太靠近 iPhone X 上的主页指示器

ios Iphone X 仅在从底部拖动时显示主页指示器