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

时间:2018-11-21 06:58:21

标签: swift uinavigationbar

是否可以将导航栏分为两部分,或者需要添加任何自定义视图,在导航栏中添加两种颜色,如下所示-

如果我在下面输入代码-

它不仅应用于左上角,还应用于整个导航栏。

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

enter image description here

4 个答案:

答案 0 :(得分:2)

好的,请事先设计您的双色图像或用代码绘制它,然后调用setBackgroundImage(_:for:barMetrics:)

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

答案 1 :(得分:0)

您可以先使用快速代码绘制所需的渐变(或两种不同的非渐变颜色)图像,然后将其设置为页眉。

使用图像渲染器创建图像

使用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)

答案 2 :(得分:0)

我建议创建一个自定义导航栏。制作一个UIView并为后退按钮,汉堡菜单(如果需要)添加一些委托。

答案 3 :(得分:0)

您必须像这样更改导航栏的背景图像:

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

其中bg1是: bg1

和bg 2是: bg2

结果是:

Result

请记住:

  • 如果您想要更多动态范围的颜色,则可以使用代码为图像着色。
  • 您可以在导航栏后面使用多个imageView并为其设置颜色。 (一个用于左部分,一个用于右部分)。并隐藏导航栏背景图像。所以错觉看起来一样。