0

私はnavigationBarとrightButtonItemを持っており、別のnavigationBarには&のleftButtonItemがあります。
私はsubTitleでnavigationBarを試してみることを練習しますが、タイトル&字幕文字列を長く設定すると、
重複しており、文字列が切り詰められています。
この問題を解決するにはどうすればよいですか?subTitleのNavigationTitleは重複しています

Issue picture_1
Issue picture_2

func setTitle(title:String, subtitle:String) -> UIView { 
    let titleLabel = UILabel(frame: CGRect(x:0, y:-5, width:0, height:0)) 

    titleLabel.backgroundColor = UIColor.clear 
    titleLabel.textColor = UIColor.red 
    titleLabel.font = UIFont.boldSystemFont(ofSize: 14) 
    titleLabel.text = title 
    titleLabel.sizeToFit() 

    let subtitleLabel = UILabel(frame: CGRect(x:0, y:18, width:0, height:0)) 
    subtitleLabel.backgroundColor = UIColor.clear 
    subtitleLabel.textColor = UIColor.blue 
    subtitleLabel.font = UIFont.systemFont(ofSize: 12) 
    subtitleLabel.text = subtitle 
    subtitleLabel.sizeToFit() 

    let titleView = UIView(frame: CGRect(x:0, y:0, width:max(titleLabel.frame.size.width, subtitleLabel.frame.size.width), height:30)) 
    titleView.addSubview(titleLabel) 
    titleView.addSubview(subtitleLabel) 

    let widthDiff = subtitleLabel.frame.size.width - titleLabel.frame.size.width 

    if widthDiff > 0 { 
     var frame = titleLabel.frame 
     frame.origin.x = widthDiff/2 
     titleLabel.frame = frame.integral 
    } else { 
     var frame = subtitleLabel.frame 
     frame.origin.x = abs(widthDiff)/2 
     titleLabel.frame = frame.integral 
    } 

    return titleView 

}//source from here:https://gist.github.com/nazywamsiepawel/0166e8a71d74e96c7898 

答えて

0

一つの小さな編集:

if widthDiff > 0 { 
    var frame = titleLabel.frame 
    frame.origin.x = widthDiff/2 
    titleLabel.frame = frame.integral 
} else { 
    var frame = subtitleLabel.frame 
    frame.origin.x = abs(widthDiff)/2 

    // this should be *subtitleLabel* 
    //titleLabel.frame = frame.integral 
    subtitleLabel.frame = frame.integral 

} 
+0

おかげで、あなたのANS私を助けてください。 – JimmyLee

0

代わりに別のラベルを作成する彼らが重ならないように、次の2本の線で1つのラベルを試すことができます。あなたは2つのタイトルのために別のフォントをしたい場合は、この

label.text= "Main title\nSub title" 

のように、次の行を示すために、あなたの文字列内のテキスト、使用\ nを設定すると、属性付きの文字列を使用しようと、このコード

label.numberOfLines = 2 

を使用しますあなたのコードのこのセクションでは必要のようなthis

関連する問題