Ios 如何用文本填充标签,直到到达它';s宽度

Ios 如何用文本填充标签,直到到达它';s宽度,ios,swift,uilabel,Ios,Swift,Uilabel,我想知道是否有办法确定UILabel是否充满文本。 例如,如果标签的大小为: | | 我想知道标签何时充满文本,例如: |.........| 我需要用点填充它,直到它达到文本字段的宽度。使用框架和默认文本创建标签 let label = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 100)) label.text = "" 用点填充文本,直到文本宽度达到标签宽度 while label.sizeThatFi

我想知道是否有办法确定
UILabel
是否充满文本。 例如,如果标签的大小为:

|         |
我想知道标签何时充满文本,例如:

|.........| 

我需要用点填充它,直到它达到文本字段的宽度。

使用框架和默认文本创建标签

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! + "."
}

while label.sizehattfits(label.frame.size).width好吧,如果我没弄错的话,也许你要找的是标签:

接收视图的自然大小,仅考虑属性 对视图本身的影响

标签的宽度
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!)
// ................................
显然,如果您想将其与
UITextField
进行比较,例如(正如您在问题中提到的),它应该是:

// "textField" the name of your text field...
while lbl.intrinsicContentSize.width < textField.frame.size.width {
    lbl.text?.append(".")
}
/“textField”文本字段的名称。。。
而lbl.intrinsicContentSize.width
您可以获得标签宽度和文本宽度(通过),并比较两者
// "textField" the name of your text field...
while lbl.intrinsicContentSize.width < textField.frame.size.width {
    lbl.text?.append(".")
}