在Swift中对UINavigationBar进行子类化

时间:2015-06-29 13:15:43

标签: ios swift uinavigationcontroller uinavigationbar subclass

我尝试创建自定义UINavigationBar课程,然后使用Storyboard将其设置为我UINavigationController的NavigationBar的课程。

这是我UINavigationBar班的代码:

class CustomNavBar: UINavigationBar {

    override func drawRect(rect: CGRect) {
        super.drawRect(rect)
        // Drawing code
        self.backgroundColor = UIColor.orangeColor()

        let myLabel = UILabel(frame: CGRect(x: 0, y: 4, width: 600, height: 36))
        myLabel.backgroundColor = UIColor.purpleColor()
        myLabel.textColor = UIColor.yellowColor()
        myLabel.text = "Custom NavBar!"

        self.addSubview(myLabel)
    }

}

然后,在Interface Builder中,我使用Identity Inspector将其设置为NavigationBar UINavigationController的类。

当我运行应用程序时 - 它会冻结。它挂在LaunchScreen.xib上,并没有做任何事情。

为什么这样做?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

在Swift上:

File-New-File- iOS Source - Cocoa Touch类 - 选择子类:UINavigationBar并命名为 - CustomNavigationBar。

class CustomNavigationBar: UINavigationBar {

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

            self.backgroundColor = UIColor.redColor()

        }
        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)!
        }
        override func drawRect(rect: CGRect) {

        }   
    }