2017-08-17 105 views
1

我有一個帶有可變長度標題的UINavigationBar。爲了確保標題,而不適合被截斷我實現下面的代碼在我viewDidLoad()自動調整大小的導航欄標題錯位

let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 40)) 
titleLabel.text = "\(petsName)'s Day" 
titleLabel.font = UIFont.systemFont(ofSize: 30) 
titleLabel.backgroundColor = UIColor.clear 
titleLabel.textColor = UIColor.white 
titleLabel.adjustsFontSizeToFitWidth = true 
titleLabel.minimumScaleFactor = 0.5 
self.navBar.topItem?.titleView = titleLabel 

但是,因爲我有一個欄按鈕項目,標題被移動到左邊:

navbar

有什麼辦法來實現上面的代碼,但保持在導航欄內對齊文本中心?

請幫我解決這個問題

+0

變化寬度至設備寬度和titleLabel它對準中心。 –

回答

1

試試這個..可曾

var view = UIView(frame: CGRect(x: 0, y: 0, width: 150, height: 40)) 
var label = UILabel(frame: CGRect(x: 0, y: 0, width: 150, height: 40)) 
label.text = "Joys Day" 
label.textAlignment = .center 
label.font = UIFont.systemFont(ofSize: 30) 
view.addSubview(label) 
navigationItem?.titleView = view 
+0

您是否知道爲什麼此解決方案與我的其他視圖具有相同字體大小相比降低了我的標題文本?看到這裏:http://imgur.com/a/LnQzp – MarksCode

+0

對不起,設置你的字體標籤...標籤字體未設置在此代碼..是問題,然後增加高度 –

+0

我。這裏是我的完整代碼與您的解決方案:https://gist.github.com/MarksCode/ea14a0a984fd8384399893c2d987ebb8 – MarksCode

1

變化titleLabel寬度設備的寬度和它對準中心。嘗試:

let deviceWidth = UIScreen.main.bounds.size.width 

    let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: deviceWidth, height: 40)) 
    titleLabel.text = "My Test Title" 
    titleLabel.font = UIFont.systemFont(ofSize: 20) 
    titleLabel.backgroundColor = UIColor.clear 
    titleLabel.textColor = UIColor.white 
    titleLabel.adjustsFontSizeToFitWidth = true 
    titleLabel.minimumScaleFactor = 0.5 
    titleLabel.textAlignment = .center 
    self.navigationItem.titleView = titleLabel 

輸出: enter image description here

+0

這不會使問題中要求的導航欄中的標籤居中。 – rmaddy