在Swift中改变导航条的颜色

我正在使用一个选择器视图,允许用户为整个应用程序选择颜色主题。

我计划改变导航栏的颜色,背景和可能的标签栏(如果可能的话)。

我一直在研究如何做到这一点,但找不到任何Swift的例子。谁能给我一个代码的例子,我需要用来改变导航栏的颜色和导航栏的文本颜色?

选取器视图已经设置好,我正在寻找更改UI颜色的代码。

391445 次浏览

导航栏:

navigationController?.navigationBar.barTintColor = UIColor.green

用你想要的任何UIColor替换greenColor,如果你喜欢,你也可以使用RGB。

导航栏文本:

navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.orange]

用你喜欢的颜色替换orangeColor。

标签栏:

tabBarController?.tabBar.barTintColor = UIColor.brown

标签栏文本:

tabBarController?.tabBar.tintColor = UIColor.yellow

最后两个,用你选择的颜色替换brownColor和yellowColor。

这里有一些非常基本的外观定制,你可以应用于整个应用程序:

UINavigationBar.appearance().backgroundColor = UIColor.greenColor()
UIBarButtonItem.appearance().tintColor = UIColor.magentaColor()
//Since iOS 7.0 UITextAttributeTextColor was replaced by NSForegroundColorAttributeName
UINavigationBar.appearance().titleTextAttributes = [UITextAttributeTextColor: UIColor.blueColor()]
UITabBar.appearance().backgroundColor = UIColor.yellowColor();

斯威夫特5.4.2:

UINavigationBar.appearance().backgroundColor = .green // backgorund color with gradient
// or
UINavigationBar.appearance().barTintColor = .green  // solid color
    

UIBarButtonItem.appearance().tintColor = .magenta
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.blue]
UITabBar.appearance().barTintColor = .yellow

关于Swift中UIAppearance API的更多信息,您可以阅读在这里

UINavigationBar.appearance().barTintColor

为我工作

使用外观API和barTintColor颜色。

UINavigationBar.appearance().barTintColor = UIColor.greenColor()

iOS 8 (swift)

let font: UIFont = UIFont(name: "fontName", size: 17)
let color = UIColor.backColor()
self.navigationController?.navigationBar.topItem?.backBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName: color], forState: .Normal)

appearance()函数并不总是适用于我。所以我更喜欢创建一个NC对象并改变它的属性。

var navBarColor = navigationController!.navigationBar
navBarColor.barTintColor =
UIColor(red:  255/255.0, green: 0/255.0, blue: 0/255.0, alpha: 100.0/100.0)
navBarColor.titleTextAttributes =
[NSForegroundColorAttributeName: UIColor.whiteColor()]

此外,如果你想添加一个图像而不仅仅是文本,这也是可行的

var imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 70, height: 70))
imageView.contentMode = .ScaleAspectFit


var image = UIImage(named: "logo")
imageView.image = image
navigationItem.titleView = imageView
UINavigationBar.appearance().barTintColor = UIColor(red: 46.0/255.0, green: 14.0/255.0, blue: 74.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]

只需在代码中粘贴didFinishLaunchingWithOptions中的这一行。

在Swift 2中

在导航栏中更改颜色,

navigationController?.navigationBar.barTintColor = UIColor.whiteColor()

在项目导航栏中更改颜色,

navigationController?.navigationBar.tintColor = UIColor.blueColor()

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

AppDelegate中,这已经全局地改变了导航栏的格式,并删除了底线/边界(这对大多数人来说是一个问题区域),以给你我认为你和其他人正在寻找的东西:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {


UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarPosition: UIBarPosition.Any, barMetrics: UIBarMetrics.Default)
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().barTintColor = Style.SELECTED_COLOR
UINavigationBar.appearance().translucent = false
UINavigationBar.appearance().clipsToBounds = false
UINavigationBar.appearance().backgroundColor = Style.SELECTED_COLOR
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : (UIFont(name: "FONT NAME", size: 18))!, NSForegroundColorAttributeName: UIColor.whiteColor()] }

然后你可以设置一个Constants.swift文件,其中包含一个带有颜色和字体等的样式结构。然后你可以添加一个tableView/pickerView到任何ViewController,并使用“availableThemes”数组允许用户改变themeColor。

关于这一点的美妙之处在于,你可以在整个应用程序中为每种颜色使用一个引用,它会根据用户选择的“主题”进行更新,如果没有一个,它默认为theme1():

import Foundation
import UIKit


struct Style {




static let availableThemes = ["Theme 1","Theme 2","Theme 3"]


static func loadTheme(){
let defaults = NSUserDefaults.standardUserDefaults()
if let name = defaults.stringForKey("Theme"){
// Select the Theme
if name == availableThemes[0]   { theme1()  }
if name == availableThemes[1]   { theme2()  }
if name == availableThemes[2]   { theme3()  }
}else{
defaults.setObject(availableThemes[0], forKey: "Theme")
theme1()
}
}


// Colors specific to theme - can include multiple colours here for each one
static func theme1(){
static var SELECTED_COLOR = UIColor(red:70/255, green: 38/255, blue: 92/255, alpha: 1) }


static func theme2(){
static var SELECTED_COLOR = UIColor(red:255/255, green: 255/255, blue: 255/255, alpha: 1) }


static func theme3(){
static var SELECTED_COLOR = UIColor(red:90/255, green: 50/255, blue: 120/255, alpha: 1) } ...

我必须这么做

UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().barStyle = .Black
UINavigationBar.appearance().backgroundColor = UIColor.blueColor()

否则背景颜色不会改变

如果你有自定义的导航控制器,你可以使用上面的代码片段。 所以在我的例子中,我使用如下代码段

Swift 3.0, XCode 8.1版本

navigationController.navigationBar.barTintColor = UIColor.green

导航栏文本:

navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]

这是非常有益的谈话。

首先将navigationBar的isTranslucent属性设置为false以获得所需的颜色。然后像这样改变导航栏的颜色:

@IBOutlet var NavigationBar: UINavigationBar!


NavigationBar.isTranslucent = false
NavigationBar.barTintColor = UIColor (red: 117/255, green: 23/255, blue: 49/255, alpha: 1.0)

iOS 10 Swift 3.0

如果你不介意使用swift框架,那么我们UINeraida将导航背景更改为UIColorHexColorUIImage,并以编程方式更改导航后退按钮文本,更改完整的前景文本颜色。

对于UINavigationBar

    neraida.navigation.background.color.hexColor("54ad00", isTranslucent: false, viewController: self)
    

//Change navigation title, backbutton colour
    

neraida.navigation.foreground.color.uiColor(UIColor.white, viewController: self)
    

//Change navigation back button title programmatically
    

neraida.navigation.foreground.backButtonTitle("Custom Title", ViewController: self)
    

//Apply Background Image to the UINavigationBar
    

neraida.navigation.background.image("background", edge: (0,0,0,0), barMetrics: .default, isTranslucent: false, viewController: self)

斯威夫特3

UINavigationBar.appearance().barTintColor = UIColor(colorLiteralRed: 51/255, green: 90/255, blue: 149/255, alpha: 1)

这将设置你的导航栏颜色像Facebook栏颜色:)

在故事板上执行此操作(接口构建器检查器)

IBDesignable的帮助下,我们可以为UINavigationController的接口构建器检查器添加更多选项,并在故事板上调整它们。首先,将以下代码添加到项目中。

@IBDesignable extension UINavigationController {
@IBInspectable var barTintColor: UIColor? {
set {
guard let uiColor = newValue else { return }
navigationBar.barTintColor = uiColor
}
get {
guard let color = navigationBar.barTintColor else { return nil }
return color
}
}
}

然后在storyboard上简单地设置导航控制器的属性。

enter image description here

这个方法也可以用于管理故事板中导航栏文本的颜色:

@IBInspectable var barTextColor: UIColor? {
set {
guard let uiColor = newValue else {return}
navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: uiColor]
}
get {
guard let textAttributes = navigationBar.titleTextAttributes else { return nil }
return textAttributes[NSAttributedStringKey.foregroundColor] as? UIColor
}
}

斯威夫特3

可以在ViewDidLoad()中使用的简单的一行代码

//Change Color
self.navigationController?.navigationBar.barTintColor = UIColor.red
//Change Text Color
self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

Swift 3和Swift 4兼容Xcode 9

一个更好的解决方案是为常见的导航栏创建一个类

我有5个控制器,每个控制器的标题都改为橙色。因为每个控制器都有5个导航控制器,所以我不得不从检查器或代码中改变每一个颜色。

所以我做了一个类,而不是改变每个导航栏从代码我只是分配这个类,它工作在所有5个控制器代码重用能力。 你只需要将这个类分配给每个控制器就可以了

import UIKit


class NabigationBar: UINavigationBar {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonFeatures()
}


func commonFeatures() {


self.backgroundColor = UIColor.white;
UINavigationBar.appearance().titleTextAttributes =     [NSAttributedStringKey.foregroundColor:ColorConstants.orangeTextColor]


}




}

斯威夫特4

您可以更改导航栏的颜色。只需在viewDidLoad()中使用下面的代码片段

导航栏颜色

self.navigationController?.navigationBar.barTintColor = UIColor.white

导航栏文字颜色

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.purple]

对于iOS 11大标题导航栏,你需要使用largeTitleTextAttributes属性

self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.purple]

更新为Swift 3, 4, 4.2, 5+

// setup navBar.....
UINavigationBar.appearance().barTintColor = .black
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
UINavigationBar.appearance().isTranslucent = false

斯威夫特4

UINavigationBar.appearance().barTintColor = .black
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UINavigationBar.appearance().isTranslucent = false

Swift 4.2, 5+

UINavigationBar.appearance().barTintColor = .black
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
UINavigationBar.appearance().isTranslucent = false

如果你想使用大标题,添加这一行:

UINavigationBar.navigationBar.prefersLargeTitles = true

也可以在这里检查:https://github.com/hasnine/iOSUtilitiesSource

Swift 4, iOS 12和Xcode 10更新

只需在viewDidLoad()中放入一行

navigationController?.navigationBar.barTintColor = UIColor.red

SWIFT 4 -平滑过渡(最佳解决方案):

如果你从导航控制器向后移动你必须在你想要使用的导航控制器上设置不同的颜色

override func willMove(toParentViewController parent: UIViewController?) {
navigationController?.navigationBar.barTintColor = .white
navigationController?.navigationBar.tintColor = Constants.AppColor
}

而不是把它放在viewWillAppear中,这样转换就更干净了。

斯威夫特4.2

override func willMove(toParent parent: UIViewController?) {
navigationController?.navigationBar.barTintColor = UIColor.black
navigationController?.navigationBar.tintColor = UIColor.black
}

斯威夫特4:

在应用程序级别更改导航栏外观的完美代码。

enter image description here

// MARK: Navigation Bar Customisation


// To change background colour.
UINavigationBar.appearance().barTintColor = .init(red: 23.0/255, green: 197.0/255, blue: 157.0/255, alpha: 1.0)


// To change colour of tappable items.
UINavigationBar.appearance().tintColor = .white


// To apply textAttributes to title i.e. colour, font etc.
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor : UIColor.white,
.font : UIFont.init(name: "AvenirNext-DemiBold", size: 22.0)!]
// To control navigation bar's translucency.
UINavigationBar.appearance().isTranslucent = false

编码快乐!

确保设置按钮状态为正常

extension UINavigationBar {


func makeContent(color: UIColor) {
let attributes: [NSAttributedString.Key: Any]? = [.foregroundColor: color]


self.titleTextAttributes = attributes
self.topItem?.leftBarButtonItem?.setTitleTextAttributes(attributes, for: .normal)
self.topItem?.rightBarButtonItem?.setTitleTextAttributes(attributes, for: .normal)
}
}

ps iOS 12, Xcode 10.1

在AppDelegate中试试这个:

//MARK:- ~~~~~~~~~~setupApplicationUIAppearance Method
func setupApplicationUIAppearance() {


UIApplication.shared.statusBarView?.backgroundColor = UIColor.clear


var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}


UINavigationBar.appearance().tintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
UINavigationBar.appearance().barTintColor =  UIColor.white
UINavigationBar.appearance().isTranslucent = false


let attributes: [NSAttributedString.Key: AnyObject]


if DeviceType.IS_IPAD{
attributes = [
NSAttributedString.Key.foregroundColor: UIColor.white,
NSAttributedString.Key.font: UIFont(name: "HelveticaNeue", size: 30)
] as [NSAttributedString.Key : AnyObject]
}else{
attributes = [
NSAttributedString.Key.foregroundColor: UIColor.white
]
}
UINavigationBar.appearance().titleTextAttributes = attributes
}

iOS 13

func setupNavigationBar() {
//        if #available(iOS 13, *) {
//            let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
//            let statusBar = UIView(frame: window?.windowScene?.statusBarManager?.statusBarFrame ?? CGRect.zero)
//            statusBar.backgroundColor = #colorLiteral(red: 0.2784313725, green: 0.4549019608, blue: 0.5921568627, alpha: 1) //UIColor.init(hexString: "#002856")
//            //statusBar.tintColor = UIColor.init(hexString: "#002856")
//            window?.addSubview(statusBar)
//            UINavigationBar.appearance().tintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
//            UINavigationBar.appearance().barTintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
//            UINavigationBar.appearance().isTranslucent = false
//            UINavigationBar.appearance().backgroundColor = #colorLiteral(red: 0.2784313725, green: 0.4549019608, blue: 0.5921568627, alpha: 1)
//            UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
//        }
//        else
//        {
UIApplication.shared.statusBarView?.backgroundColor = #colorLiteral(red: 0.2784313725, green: 0.4549019608, blue: 0.5921568627, alpha: 1)
UINavigationBar.appearance().tintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
UINavigationBar.appearance().barTintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().backgroundColor = #colorLiteral(red: 0.2784313725, green: 0.4549019608, blue: 0.5921568627, alpha: 1)
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
//        }
}

扩展

extension UIApplication {


var statusBarView: UIView? {
if responds(to: Selector(("statusBar"))) {
return value(forKey: "statusBar") as? UIView
}
return nil
}}

简单地调用这个扩展和传递的颜色,它会自动改变导航栏的颜色

extension UINavigationController {
    

func setNavigationBarColor(color : UIColor){
self.navigationBar.barTintColor = color
}
}

在视图中didload或在视图中将出现call

self.navigationController?.setNavigationBarColor(color: <#T##UIColor#>)

我写这篇文章是为了那些仍然对这里的解决方案有问题的人。

我使用的是Xcode版本11.4 (11E146)。为我工作的是:

navigationController?.navigationBar.barTintColor = UIColor.white
navigationController?.navigationBar.tintColor = UIColor.black

但是!如果你将storyboard中的barTintColor设置为“default”以外的任何值,这两行代码将不起作用。

所以,要小心,并在Storyboard中设置回默认的barTintColor。 哦,苹果……< / p >

这个版本也是移除导航栏下的1px阴影线:

斯威夫特5:把这个放在你的AppDelegate didFinishLaunchingWithOptions中

UINavigationBar.appearance().barTintColor = UIColor.black
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
UINavigationBar.appearance().shadowImage = UIImage()

我的观点是:

a)设置导航栏。barTintColor / titleTextAttributes工作在任何视图(推,添加..等在init..

B)设置外观并非处处适用:

  • 你可以在AppDelegate上调用它
  • “;“;一层视图
  • 如果你在随后的推送视图中再次调用它,MNOT是否工作

SwiftUI注意:

a)不适用(没有导航栏,除非你通过UIViewControllerRepresentable伎俩..) b)对SwiftUI有效:相同的行为

Swift 5 (iOS 14)

全导航栏定制。

// -----------------------------------------------------------
// NAVIGATION BAR CUSTOMIZATION
// -----------------------------------------------------------
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationBar.tintColor = UIColor.white
self.navigationController?.navigationBar.isTranslucent = false


if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
appearance.backgroundColor = UIColor.blue
appearance.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]


navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance
navigationController?.navigationBar.compactAppearance = appearance


} else {
self.navigationController?.navigationBar.barTintColor = UIColor.blue
self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
}


// -----------------------------------------------------------
// NAVIGATION BAR SHADOW
// -----------------------------------------------------------
self.navigationController?.navigationBar.layer.masksToBounds = false
self.navigationController?.navigationBar.layer.shadowColor = UIColor.black.cgColor
self.navigationController?.navigationBar.layer.shadowOffset = CGSize(width: 0, height: 2)
self.navigationController?.navigationBar.layer.shadowRadius = 15
self.navigationController?.navigationBar.layer.shadowOpacity = 0.7

如果你使用iOS 13或14和大标题,并想改变导航栏的颜色,使用以下代码:

参考当导航栏为大标题时,barTintColor未应用

    fileprivate func setNavigtionBarItems() {
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
appearance.backgroundColor = .brown
//            let naviFont = UIFont(name: "Chalkduster", size: 30) ?? .systemFont(ofSize: 30)
//            appearance.titleTextAttributes = [NSAttributedString.Key.font: naviFont]
            

navigationController?.navigationBar.prefersLargeTitles = true
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance
//navigationController?.navigationBar.compactAppearance = appearance
} else {
// Fallback on earlier versions
navigationController?.navigationBar.barTintColor = .brown
}
}

这花了我1个小时来找出我的代码中的错误:(,因为我使用大标题,很难用largeTitle改变tintColor,为什么苹果让它这么复杂,这么多行只是做一个tintColor的navigationBar。

iOs 14 +

init() {
let appearance = UINavigationBarAppearance()
appearance.shadowColor = .clear // gets also rid of the bottom border of the navigation bar
appearance.configureWithTransparentBackground()
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
}

Swift 5,一个简单的UINavigationController扩展方法。在答案的底部是扩展预览

第一个视图控制器(Home):

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)


navigationController?.setTintColor(.white)
navigationController?.backgroundColor(.orange)
}

第二个视图控制器(详细信息):

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.transparentNavigationBar()
navigationController?.setTintColor(.black)
}

UINavigationController的扩展:

extension UINavigationController {
func transparentNavigationBar() {
self.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.isTranslucent = true
}


func setTintColor(_ color: UIColor) {
self.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: color]
self.navigationBar.tintColor = color
}


func backgroundColor(_ color: UIColor) {
navigationBar.setBackgroundImage(nil, for: .default)
navigationBar.barTintColor = color
navigationBar.shadowImage = UIImage()
}
}

故事板视图:

enter image description here

预览:

enter image description here

以下代码适用于iOS 15

if #available(iOS 15, *) {
// Navigation Bar background color
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = UIColor.yourColor
        

// setup title font color
let titleAttribute = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 25, weight: .bold), NSAttributedString.Key.foregroundColor: UIColor.yourColor]
appearance.titleTextAttributes = titleAttribute
        

navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance
}
在iOS 15中,UIKit扩展了scrollEdgeAppearance的使用,默认情况下,它会产生一个透明的背景,到所有的导航栏。 设置scrollEdgeAppearance如下代码
if #available(iOS 15, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = < your tint color >
navigationController?.navigationBar.standardAppearance = appearance;
navigationController?.navigationBar.scrollEdgeAppearance = navigationController?.navigationBar.standardAppearance
}

没有一个解决方案对我有效,所以我分享一个有效的。

Swift 5, Xcode 13.4.1

将以下内容放入viewDidLoad():

let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = UIColor.systemBlue
appearance.titleTextAttributes = [.foregroundColor: UIColor.white]
navigationItem.standardAppearance = appearance
navigationItem.scrollEdgeAppearance = appearance
navigationItem.compactAppearance = appearance

这就是结果

enter image description here

记住将检查器中的所有设置设置为默认值。如果你需要更多的调整,可以在开发者文档中搜索“定制你的应用程序导航栏”。

希望这能有所帮助。

我在iOS 16.1的Xcode 14.1中工作

我必须改变scrollEdgeAppearance来改变导航条的颜色。即使我禁用了半透明属性,背景色也只是真正半透明的颜色。

事情是这样的:

navigationController?.navigationBar.scrollEdgeAppearance = UIColor.*/your_color/*