代码之家  ›  专栏  ›  技术社区  ›  iDeveloper

如何在导航栏中设置两种颜色?

  •  0
  • iDeveloper  · 技术社区  · 6 年前

    有没有办法将导航栏分成两部分,或者需要添加任何自定义视图,在导航栏中添加两种颜色,如下所示-

    如果我把代码放在下面-

    它适用于整个导航栏,而不仅仅是左角。

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

    enter image description here

    4 回复  |  直到 6 年前
        1
  •  2
  •   matt    6 年前

    当然,可以预先设计双色图像,或者用代码绘制并调用 setBackgroundImage(_:for:barMetrics:) .

    https://developer.apple.com/documentation/uikit/uinavigationbar/1624968-setbackgroundimage

        2
  •  0
  •   Rizwan    6 年前

    可以先用swift代码绘制所需的渐变(或两个不同的非渐变颜色)图像,然后将其设置为标题。

    使用图像渲染器创建图像

    使用 image(actions:) 创建图像的方法( UIImage 对象)使用图像渲染器。 https://developer.apple.com/documentation/uikit/uigraphicsimagerenderer https://developer.apple.com/library/archive/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/BezierPaths/BezierPaths.html

    https://stackoverflow.com/a/30761714/8238512

    将创建的图像设置为高于您已经知道的

    使用上面生成的 image 开始 navigationBar

    self.navigationController?.navigationBar.setBackgroundImage(< *useAboveGeneratedImage* >),for:.default)
    
        3
  •  0
  •   vinbhai4u    6 年前

    我建议创建一个自定义导航栏。制作一个uiview,并添加一些代表返回按钮,汉堡包菜单(如果需要)。

        4
  •  0
  •   Mojtaba Hosseini    6 年前

    您必须更改导航栏的背景图像,如下所示:

    if condition {
        navigationController?.navigationBar.setBackgroundImage(#imageLiteral(resourceName: "bg1"), for: .default)
    } else {
        navigationController?.navigationBar.setBackgroundImage(#imageLiteral(resourceName: "bg2"), for: .default)
    }
    

    其中bg1是: bg1

    背景2是: bg2

    结果是:

    Result

    请记住:

    • 如果需要更动态的颜色范围,可以在代码中为图像上色。
    • 您可以使用多个 imageView 在导航栏后面设置颜色。(左一右一)。并隐藏导航栏背景图像。所以幻觉看起来是一样的。