2017-04-17 52 views
0

我有一個UINavigationBar的子類。 如何在這個子類中設置barTintColor如何從UINavigationBar子類設置barTintColor

class NavBar: UINavigationBar { 

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

} 

回答

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

謝謝,這確實有效! – Edgar

0

我已經成功地使其通過繼承UINavigationController,並從那裏設置barTintColor工作:

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

     self.navigationBar.barTintColor = UIColor.someColor 
    } 
} 

編輯:最後,我用從@ dirtydanee的回答解決方案。因此我不需要子類UINavigationController

相關問題