我的问题在于navigationController
规则不适用。
override func viewDidLoad() {
super.viewDidLoad()
navigationBarColor()
}
func navigationBarColor() {
navigationController?.navigationBar.barTintColor = UIColor(red:0.91, green:0.04, blue:0.51, alpha:1.0)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
}
这是结果 - 颜色不存在
我该怎么办?
答案 0 :(得分:0)
设置样式属性的代码看起来是正确的。 navigationController
可能是零。
更好的方法是使用自定义导航控制器子类并将其连接到“界面”构建器中的导航控制器。
open class NavigationController: UINavigationController {
open override func viewDidLoad() {
super.viewDidLoad()
navigationBar.barTintColor = UIColor.blue
}
}
答案 1 :(得分:0)
首先设置bartintColor然后再设置 你在导航栏中设置“清晰图像”:) 当然它是透明的。
您需要使用某种颜色的图像或在代码中创建它:(例如)
extension UIImage {
class func imageWithColor(_ color: UIColor) -> UIImage {
let rect = CGRect(origin: CGPoint.zero, size: CGSize(width: 1.0, height: 1.0))
UIGraphicsBeginImageContext(rect.size);
guard let context = UIGraphicsGetCurrentContext() else {
UIGraphicsEndImageContext()
return UIImage()
}
context.setFillColor(color.cgColor);
context.fill(rect);
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image ?? UIImage()
}
}
并在导航栏中设置图像,如下所示:
当控制器出现时,调用此navigationBar会发生变化
func updatenavigationBar() {
navigationController?.navigationBar.tintColor = .white
navigationController?.navigationBar.isTranslucent = true
navigationController?.navigationBar.setBackgroundImage(UIImage.imageWithColor(color), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
}
答案 2 :(得分:0)
我不太确定您根据问题提出的问题,但如果您尝试更改导航栏的颜色,我建议您更改 :
navigationController?.navigationBar.barTintColor = UIColor(red:0.91, green:0.04, blue:0.51, alpha:1.0)
要:
navigationController?.navigationBar.backgroundColor = UIColor(red:0.91, green:0.04, blue:0.51, alpha:1.0)
这会将颜色添加为背景颜色,而不仅仅是颜色。
答案 3 :(得分:0)
使用此代码
import Foundation
import Swift
extension UINavigationController
{
func setMainTopNavigationBarAttribute() -> Void
{
self.navigationBar.shadowImage = UIImage()
self.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationBar.isTranslucent = false
self.navigationBar.tintColor = UIColor.white
self.navigationBar.backgroundColor = UIColor.white
}
}
你可以这样使用
let navigationController = UIStoryboard.user.instantiateViewController(withIdentifier: "MMNavigationController") as! UINavigationController
navigationController.setMainTopNavigationBarAttribute()
答案 4 :(得分:0)
You just change this two line in your function
func navigationBarColor() {
navigationController?.navigationBar.barTintColor = UIColor(red:0.91, green:0.04, blue:0.51, alpha:1.0)
//change this two line in your function
navigationController?.navigationBar.shadowImage = UIImage.init(named: "")
navigationController?.navigationBar.setBackgroundImage(UIImage.init(named: ""), for: .default)
}