2017-05-25 88 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! + "." 
}