以编程方式更改 UINavigationbar 背景颜色和标题 font/colour
Change UINavigationbar background colour and title font/colour programmatically
我想通过 AppDelegate 在 iOS 11 和 swift 4 中以编程方式更改导航栏背景颜色、标题字体和颜色。我知道如何使用 Xcode 来做到这一点,但没有找到 up-to-date 以编程方式进行的解决方案。
只需使用UINavigationBar.appearance()
例如:
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor.white]
或
UINavigationBar.appearance().barTintColor = .blue
对于 AppDelegate:
在 AppDelegate
中的 didFinishLaunchingWithOptions
中输入以下代码:
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.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]
UINavigationBar.appearance().isTranslucent = false
您可以使用以下代码更改背景颜色和标题字体。
func setupNavigationBarAppearance() {
UINavigationBar.appearance().tintColor = .black
UINavigationBar.appearance().shadowImage = UIImage.imageFromColor(.black, width: 1.0, height: 1.0)?.resizableImage(withCapInsets: .zero, resizingMode: .tile)
UINavigationBar.appearance().isTranslucent = false
let font:UIFont = UIFont(name: "ProximaNova-Bold", size: 18.0)!
let navbarTitleAtt = [
NSAttributedStringKey.font:font,
NSAttributedStringKey.foregroundColor: UIColor.white
]
UINavigationBar.appearance().titleTextAttributes = navbarTitleAtt
}
并在 didFinishLaunchingWithOptions 中将此函数称为 setupNavigationBarAppearance()。我正在使用相同的代码,并且工作正常。
以下是仅针对特定 ViewController 执行此操作的步骤。
我创建了一个 BaseViewController 文件,它是我所有 ViewController 的 parent。并将以下代码添加到 BaseViewController 的 viewDidLoad() 中。
用于更改导航栏的背景颜色
self.navigationController?.navigationBar.barTintColor = UIColor.white
用于更改导航栏的标题和栏按钮颜色
self.navigationController?.navigationBar.tintColor = UIColor.black
用于更改字体
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor:UIColor.red, NSAttributedStringKey.font : UIFont.sourceSansPro(ofSize: 18.0), NSAttributedStringKey.kern:1.5]
在 iOS 现在是 15
navigationController.navigationBar.backgroundColor = .white
我想通过 AppDelegate 在 iOS 11 和 swift 4 中以编程方式更改导航栏背景颜色、标题字体和颜色。我知道如何使用 Xcode 来做到这一点,但没有找到 up-to-date 以编程方式进行的解决方案。
只需使用UINavigationBar.appearance()
例如:
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor.white]
或
UINavigationBar.appearance().barTintColor = .blue
对于 AppDelegate:
在 AppDelegate
中的 didFinishLaunchingWithOptions
中输入以下代码:
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.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]
UINavigationBar.appearance().isTranslucent = false
您可以使用以下代码更改背景颜色和标题字体。
func setupNavigationBarAppearance() {
UINavigationBar.appearance().tintColor = .black
UINavigationBar.appearance().shadowImage = UIImage.imageFromColor(.black, width: 1.0, height: 1.0)?.resizableImage(withCapInsets: .zero, resizingMode: .tile)
UINavigationBar.appearance().isTranslucent = false
let font:UIFont = UIFont(name: "ProximaNova-Bold", size: 18.0)!
let navbarTitleAtt = [
NSAttributedStringKey.font:font,
NSAttributedStringKey.foregroundColor: UIColor.white
]
UINavigationBar.appearance().titleTextAttributes = navbarTitleAtt
}
并在 didFinishLaunchingWithOptions 中将此函数称为 setupNavigationBarAppearance()。我正在使用相同的代码,并且工作正常。
以下是仅针对特定 ViewController 执行此操作的步骤。
我创建了一个 BaseViewController 文件,它是我所有 ViewController 的 parent。并将以下代码添加到 BaseViewController 的 viewDidLoad() 中。
用于更改导航栏的背景颜色
self.navigationController?.navigationBar.barTintColor = UIColor.white
用于更改导航栏的标题和栏按钮颜色
self.navigationController?.navigationBar.tintColor = UIColor.black
用于更改字体
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor:UIColor.red, NSAttributedStringKey.font : UIFont.sourceSansPro(ofSize: 18.0), NSAttributedStringKey.kern:1.5]
在 iOS 现在是 15
navigationController.navigationBar.backgroundColor = .white