0
UIViewController
のサブクラスに、ナビゲーションバーのタイトルにラベル(UILabel
)を設定しようとしています。 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()
}
}
このコードを実行すると、空のタイトルが表示されます。私は間違って何をしていますか?ありがとう。
「タイトルラベル」はどのビューにも追加されていますか? 次のdidSetメソッドbtwを使うことができるので、文字列を設定した後に 'setup()'を実行する必要はありません。 '' 'VARのtitleString = ""{ didSet { せナビゲーションバー= navigationController!.navigationBar (...) } }' ''私が直接行を挿入した場合 – Houwert
titleLbelは、ナビゲーションバーに追加することができますHomeViewControllerのviewDidLoadを使用してsetup()内のコードを削除します。 –