【发布时间】:2015-06-29 13:15:42
【问题描述】:
我正在尝试创建一个自定义 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 将其设置为我的 UINavigationController 的 NavigationBar 的类。
当我运行应用程序时 - 它会冻结。它挂断了LaunchScreen.xib 并且不执行任何操作。
为什么要这样做?这样做的正确方法是什么?
【问题讨论】:
-
也许你需要在某个地方打电话给
super.drawRect -
听起来不错 - 但它没有这样做......(不过,我会将它添加到我的代码中,在我的问题正文中)
-
您是否收到任何错误消息
-
不,它只是在 LaunchScreen.XIB 屏幕上冻结 - 这是我从未见过的。很奇怪。 (要明确:它没有崩溃,也没有产生任何错误 - 它只是运行,然后在 LaunchScreen 上冻结。)
-
是的,这很奇怪。我能够复制它,但我不知道为什么会发生这种情况。您可以尝试仅继承 UINavigationController 并在 viewDidLoad() 中编辑其 navigationBar 属性。我刚刚测试过它并没有冻结。
标签: ios swift uinavigationcontroller uinavigationbar subclass