0
我试图通过设置为导航栏标题的标签(UILabel
)将UIViewController
子类化。我不想将名称设置为self.title,而是使用属性字符串来设置标题。使用NavigationBar子类UIViewController标题
class BasicViewController: UIViewController {
var titleString = ""
func setup() {
//self.title = titleString
let navBar = navigationController!.navigationBar
navBar.barTintColor = UIColor.redColor()
let atext = NSMutableAttributedString(string: titleString)
atext.addAttribute(NSForegroundColorAttributeName, value: UIColor.whiteColor(), range: NSMakeRange(0, atext.length))
atext.addAttribute(NSStrokeColorAttributeName, value: UIColor.yellowColor(), range: NSMakeRange(0, atext.length))
atext.addAttribute(NSStrokeWidthAttributeName, value: NSNumber.init(float: -1.0), range: NSMakeRange(0, atext.length))
let titleLabel:UILabel = UILabel.init(frame: CGRectMake(50, 3, 220, 44))
titleLabel.attributedText = atext
titleLabel.textAlignment = NSTextAlignment.Center
titleLabel.font = UIFont(name: "Helvetica", size: 24.0)
}
}
class HomeViewController: BasicViewController {
override func viewDidLoad() {
super.viewDidLoad()
titleString = "My App"
setup()
}
}
如果我运行此代码,我会得到一个空标题。我究竟做错了什么?谢谢。
是否将'titleLabel'添加到任何视图? 你可以使用下面的didSet方法btw,所以你不必在设置字符串后运行'setup()'。 '''VAR titleString = “”{ didSet { 让导航栏= navigationController!.navigationBar (...) }} ''' – Houwert
titleLbel可以被添加到导航栏,如果我直接插入线使用HomeViewController的viewDidLoad在setup()内部的代码。 –