2015-12-15 4 views
5

複数の行を許可するために、ナビゲーションバーにタイトルラベルを設定しようとしています。私は、複数行のコードを配置しているカスタムナビゲーションコントローラコードを持っています。私はすでにコードが動作していることを知っていますが、私のマルチライン部分は動作していません。複数行ナビゲーションバータイトル

let titleLabel = UILabel() 
titleLabel.frame = CGRectMake(0, 0, self.navigationBar.frame.width, self.navigationBar.frame.height * 2) 
titleLabel.numberOfLines = 0 
titleLabel.lineBreakMode = .ByWordWrapping 

navigationItem.titleView = titleLabel 

しかし、テキストはまだ最後に実行されます。また、これを個々のビューコントローラ自体に入れて、self.navigationController?.navigationItemの前に追加して同じ結果を得ました。

タイトルラベルに複数の行を使用しないようにするためのコードには何かがありますか?ここで

+0

あなた 'navigationBar.frame.width'は多分まだ画面に合わせてサイズされませんでした。正しいフレームを検出するために 'viewDidLayoutSubviews'をオーバーライドしたいかもしれません。 –

答えて

20

あなたは複数行navigationBarのタイトルを作成する方法のコード例である

let label: UILabel = UILabel(frame: CGRectMake(0, 0, 400, 50)) 
label.backgroundColor = UIColor.clearColor() 
label.numberOfLines = 2 
label.font = UIFont.boldSystemFontOfSize(16.0) 
label.textAlignment = .Center 
label.textColor = UIColor.whiteColor() 
label.text = "This is a\nmultiline string for the navBar" 
self.navigationItem.titleView = label 

スウィフト3.0:

let label = UILabel(frame: CGRect(x:0, y:0, width:400, height:50)) 
label.backgroundColor = .clear 
label.numberOfLines = 2 
label.font = UIFont.boldSystemFont(ofSize: 16.0) 
label.textAlignment = .center 
label.textColor = .white 
label.text = "This is a\nmultiline string for the navBar" 
self.navigationItem.titleView = label 
+0

私はそれがほしいと思うように振る舞うためには微調整が必​​要ですが、これが助けになりました。 –

+0

フレームを明示的に設定せずに 'navigationItem.titleView'を使用しましたが、うまく動作しています。 – gutte

0

あなたがそれを望むとおりにラベル位置を取得するために使用この:

let labelWidth = navBar.bounds.width - 110 

    let label = UILabel(frame: CGRect(x:(navBar.bounds.width/2) - (labelWidth/2), y:0, width:labelWidth, height:navBar.bounds.height)) 
    label.backgroundColor = UIColor.clear 
    label.numberOfLines = 0 
    label.font = UIFont.boldSystemFont(ofSize: 13.0) 
    label.textAlignment = .center 
    label.textColor = UIColor.black 
    label.lineBreakMode = .byWordWrapping 

    label.text = loadedName 
    navBar.topItem?.title = nil 
    navBar.addSubview(label) 

トップラインの110値eは、ラベルの両側に必要なスペースです。

0

これはストーリーボードで実行できます。 UIViewをナビゲーションバーにドラッグし、UILabelをドキュメントのアウトライン内にドラッグし、線を2に合わせ、中心に合わせます。

enter image description here