2017-05-25 84 views
2

我想知道是否有方法可以確定UILabel是否爲全文的文字。 例如,如果有尺寸的標籤:如何用文字填充標籤直到達到寬度

|   | 

我想知道當標籤是全文的,如:

|.........| 

我需要填寫其用點直到它達到了textFields的寬度。

+0

你可以得到標籤寬度和文本寬度(通過https://stackoverflow.com/q/1324379/2442804)並比較兩者 – luk2302

回答

2

好吧,如果我這樣做是正確,可能是你在尋找的是標籤intrinsicContentSize

接收視圖的自然大小,僅考慮屬性視圖本身的 。

標籤intrinsicContentSize的寬度應該是標籤的實際寬度,無所謂有什麼frame.size.width值。

此基礎上,你只需執行:

let lbl = UILabel(frame: CGRect(x: 0, y: 0, width: 150, height: 21)) 

print(lbl.frame.size.width) 
// 150.0 

lbl.text = "" 

let intrinsicSizeWidth = lbl.intrinsicContentSize.width 
// since the label text is still empty, its value should be 0.0 

print(intrinsicSizeWidth) 

while lbl.intrinsicContentSize.width < lbl.frame.size.width { 
    lbl.text?.append(".") 
} 

print(lbl.text!) 
// ................................ 

請注意,增加您的標籤寬度將導致包含更多的點:

let lbl = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21)) 

. 
. 
. 

print(lbl.text!) 
// ........................................... 

顯然,如果你想將其與比較UITextField - 例如(如你在問題中提到的),它應該是:

// "textField" the name of your text field... 
while lbl.intrinsicContentSize.width < textField.frame.size.width { 
    lbl.text?.append(".") 
} 
1

創建框架和默認的文本

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 100)) 
label.text = "" 

填充文本與圓點標記,直到文本的寬度達到標籤的寬度

while label.sizeThatFits(label.frame.size).width <= label.frame.width { 
    label.text = label.text! + "." 
}