2014-10-30 99 views
34

不是垂直居中我已經創建了下面的代碼標籤:文本中的UILabel

func setupValueLabel() { 
    valueLabel.numberOfLines = 1 
    valueLabel.font = UIFont(name: "Avenir-Black", size: 50) 
    valueLabel.adjustsFontSizeToFitWidth = true 
    valueLabel.clipsToBounds = true 
    valueLabel.backgroundColor = UIColor.greenColor() 
    valueLabel.textColor = valuesColor 
    valueLabel.textAlignment = NSTextAlignment.Center 
} 

我真的不明白爲什麼,但標籤未垂直居中: Label not centered

我是否必須做任何具體的事情,以便它可以居中?

+0

這可能有點愚蠢,但是您可以檢查標籤文本中是否有額外的換行符「\ n」?代碼看起來很好。 – Eugene 2014-10-30 10:02:16

+0

這就是我立即檢查,但我不! – Loadex 2014-10-30 10:03:55

+2

你可以嘗試減小字體大小嗎?它看起來像'lineHeight'是50,但是字體的大小被'adjustsFontSizeToFitWidth = true'縮小了。 – rintaro 2014-10-30 10:07:34

回答

71

問題是字體大小縮小了adjustsFontSizeToFitWidth = true,但它不會自動調整lineHeight。原始字號爲50

默認情況下,文本與其基線對齊。你可以用baselineAdjustment屬性來調整它。

對於您的情況,您應該將其設置爲UIBaselineAdjustment.alignCenters

valueLabel.baselineAdjustment = .alignCenters 
+10

這不適合我。是否有可能baselineAdjustment = .AlignCenters不適用於某些自定義字體? – 2016-06-14 15:34:03

+0

這適用於我。感謝您的解決方案。 – 2016-07-01 07:44:50

+0

完美答案。 – jomafer 2017-02-27 10:27:21

10

感謝@ inkaro,它終於有效。

對於我的情況還有一件事,它沒有工作,因爲我設置了ByWordWrapping。我必須將lineBreakMode設置爲ByClipping