navigationController规则不适用于ViewController

时间:2017-07-19 08:28:58

标签: ios swift

我的问题在于navigationController规则不适用。

enter image description here

 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)
    }

这是结果 - 颜色不存在

enter image description here

我该怎么办?

5 个答案:

答案 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)
    }