我正在使用一个选择器视图,允许用户为整个应用程序选择颜色主题。
我计划改变导航栏的颜色,背景和可能的标签栏(如果可能的话)。
我一直在研究如何做到这一点,但找不到任何Swift的例子。谁能给我一个代码的例子,我需要用来改变导航栏的颜色和导航栏的文本颜色?
选取器视图已经设置好,我正在寻找更改UI颜色的代码。
我正在使用一个选择器视图,允许用户为整个应用程序选择颜色主题。
我计划改变导航栏的颜色,背景和可能的标签栏(如果可能的话)。
我一直在研究如何做到这一点,但找不到任何Swift的例子。谁能给我一个代码的例子,我需要用来改变导航栏的颜色和导航栏的文本颜色?
选取器视图已经设置好,我正在寻找更改UI颜色的代码。
当前回答
简单地调用这个扩展和传递的颜色,它会自动改变导航栏的颜色
extension UINavigationController {
func setNavigationBarColor(color : UIColor){
self.navigationBar.barTintColor = color
}
}
在视图中didload或在视图中将出现call
self.navigationController?.setNavigationBarColor(color: <#T##UIColor#>)
其他回答
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
以下代码适用于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
}
导航栏:
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。
简单地调用这个扩展和传递的颜色,它会自动改变导航栏的颜色
extension UINavigationController {
func setNavigationBarColor(color : UIColor){
self.navigationBar.barTintColor = color
}
}
在视图中didload或在视图中将出现call
self.navigationController?.setNavigationBarColor(color: <#T##UIColor#>)
没有一个解决方案对我有效,所以我分享一个有效的。
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
这就是结果
记住将检查器中的所有设置设置为默认值。如果你需要更多的调整,搜索开发者文档“自定义你的应用程序的导航栏”
希望这能有所帮助。