ナビゲーションtitleViewに関して問題があります。
titleViewは私の右のbarbuttonItemと画面外をカバーしています。
私は、中央の領域にちょうどtitleViewが必要で、barbuttonItemのための右の領域を持っています。
幅を正しく設定できないため、タイトルの幅を設定する方法を知りたいです。
また、ラベルの途中で切り捨てたいと思っています。
私の何が悪いですか?
ありがとうございます。あなたは事前にタイトルビューサイズ/フレームを計算する必要が
swift3でnavigationTitleViewとTruncateラベルの幅を設定する方法
Here is Image about my question.
Here is Image about my question.
self.navigationItem.titleView = setTitle(title: name, subtitle: "")
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.white
titleLabel.font = defaultTitleFont
titleLabel.text = title
titleLabel.sizeToFit()
let subtitleLabel = UILabel(frame: CGRect(x:5, y:18, width:0, height:0))
subtitleLabel.backgroundColor = UIColor.clear
subtitleLabel.textColor = UIColor.red
subtitleLabel.font = UIFont.systemFont(ofSize: 20)
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:35))
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
subtitleLabel.frame = frame.integral
}
return titleView
}
使用 ' label.lineBreakMode = .byTruncatingMiddle'を実行すると、 'let titleView = UIView(frame:CGRect(x:0、y:0、width:max(titleLabel.frame.size.width、subtitleLabe私はそれがあなたの幅の問題の起源だと思う。 –
こんにちは、Reinier Melianしかし、私はこれを設定しました "let titleView = UIView(frame:CGRect(x:0、y:l.frame.size.width)、height:35) 0、width:200、height:35)) "これは機能しません。 – Beginnerrrrrr
提案がありますか? – Beginnerrrrrr