如何更改 UINavigationItem 的背景颜色?

How to change background color of UINavigationItem?

我有一个 UINavigationItem,但我在属性检查器

中找不到标题、提示和后退按钮以外的任何内容

我想知道如何使用代码更改 UINavigationItem 背景颜色?还是以编程方式?

您可以通过代码更改它...

对于Objective-C:

    self.navigationController.navigationBar.barTintColor = [UIColor redColor];

在 viewDidLoad 方法中写入 Above 行。

对于Swift:

    self.navigationController?.navigationBar.barStyle = UIBarStyle.BlackTranslucent

    self.navigationController?.navigationBar.barTintColor  = UIColor.redColor();

    self.navigationController!.navigationBar .setBackgroundImage(UIImage .new(), forBarMetrics: UIBarMetrics.Default)
    self.navigationController!.navigationBar.shadowImage = UIImage .new();
    self.navigationController!.navigationBar.translucent = true;
    self.navigationController!.navigationBar.backgroundColor = UIColor.redColor();

您可以根据自己的选择更改颜色。

要更改栏文本...

navigationController.navigationBar.titleTextAttributes = [UITextAttributeTextColor: UIColor.blueColor()]

查看 Link... Here

看到上面的图片...你喜欢这样的屏幕输出...!!!

您不应该使用 UINavigationBar 的背景 属性,而应该像这样使用 barTintColor:

self.navigationController.navigationBar.barTintColor = UIColor.redColor()

official documentation 中所述,要更改栏背景,您必须访问 barTintColor 属性:

The tint color to apply to the navigation bar background.

如果您想编辑导航栏的样式,例如按钮颜色,您应该访问 barTint 属性。如果您想编辑导航项的样式,例如后退按钮,您应该编辑按钮 属性,而不是 UINavigationItem 的样式。

一种可能的解决方案是将包含导航项的视图控制器嵌入到导航控制器中,并访问导航栏的属性颜色:

// Color title 'navigationItem'
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]

// Background 'navigationBar'
UINavigationBar.appearance().barTintColor = UIColor.blackColor()

// Color title 'navigationBar'
let color = UIColor.orangeColor()
self.navigationController?.navigationBar.topItem?.backBarButtonItem?.setTitleTextAttributes(
    [NSForegroundColorAttributeName: color], forState: .Normal)

对于Swift 4

  self.navigationController?.navigationBar.isTranslucent = false;
  self.navigationController?.navigationBar.backgroundColor = .white