如何从UINavigationBar子类设置barTintColor

时间:2017-04-17 18:58:42

标签: ios swift uinavigationbar

我有UINavigationBar的子类。 如何在此子类中设置barTintColor

class NavBar: UINavigationBar {

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width:UIScreen.main.bounds.width, height: 66)
    }

}

2 个答案:

答案 0 :(得分:1)

您只需要覆盖UINavigationBar

的初始值
class NavBar: UINavigationBar {

    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
    }

    private func commonInit() {
        // Change barTintColor to whatever you would like 
        self.barTintColor = .red
    }

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width:UIScreen.main.bounds.width, height: 66)
    }
}

答案 1 :(得分:0)

我已设法通过继承UINavigationController并从那里设置barTintColor来使其发挥作用:

class NavBarVC: UINavigationController {
    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationBar.barTintColor = UIColor.someColor
    }
}

编辑:最后我使用了@ dirtydanee的答案中的解决方案。因此,我不需要继承UINavigationController