【问题标题】:How to set a view's color to match a translucent navigation bar's color?如何设置视图的颜色以匹配半透明导航栏的颜色?
【发布时间】:2019-10-21 20:10:21
【问题描述】:

我需要增加导航栏的高度。为此,我在导航栏下添加了一个视图(所需高度)。导航栏设置为半透明。因此导航栏颜色与实际的十六进制值略有不同。现在我需要将导航栏的颜色与下面的视图相匹配。以下是我正在使用的代码。

func setupNavigationBar() {
    title = "Profile"

    self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), for: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage(named: "")

    headerView.backgroundColor = navigationController?.navigationBar.barTintColor
    headerView.isOpaque = false  
}

我得到了不同的色调,如下所示。

如何使视图的颜色与导航栏的颜色相同?我可以通过减少视图的 alpha 来接近所需的颜色,但我对这种方法表示怀疑,因为没有定义关于它的标准。

附:导航栏必须保持半透明。

【问题讨论】:

  • 使导航栏颜色清晰
  • 对于这样的用例,如果您想要一个具有可自定义高度的导航栏,最好的解决方案是创建一个自定义导航栏(使用 UIView 或其他东西)并自己实现过渡。这是因为即使您设法将导航栏的颜色与您的视图相匹配,在某些情况下,iOS 导航栏会在过渡期间设置动画(淡入或交叉淡入淡出)而您的视图不会,这将导致糟糕的用户体验.
  • @kerry 我会考虑你提到的这一点。谢谢。

标签: ios swift uiview uinavigationbar uicolor


【解决方案1】:

您只需将headerViewopacity 设置为0.85

headerView.backgroundColor = navigationController?.navigationBar.barTintColor
headerView.layer.opacity = 0.85
headerView.isOpaque = false

You can download the sample code from here:

请忽略示例代码中其他未使用的代码。

说明:

当您将navigationController 样式设置为translucent 时,系统会自动将图层不透明度0.85 设置为UINavigationController

我亲自查看iteratingUINavigationController的所有子视图。

【讨论】:

  • 我仍然无法使用此解决方案获得相同的颜色。你是如何设置导航栏的颜色的?我正在情节提要中设置十六进制值。
  • 我也在做同样的事情。等等,我正在和你分享演示代码。谢谢
  • 只需从导航栏检查器中取消选中半透明并且不要更改不透明度
【解决方案2】:

使用 :

将导航栏的背景颜色设置为清除:
self.navigationController?.navigationBar.backgroundColor = UIColor.clear

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多