如何用文本填充标签,直到达到它的宽度

时间:2017-05-25 18:40:55

标签: ios swift uilabel

我想知道是否有办法确定UILabel是否完整的文字。 例如,如果a的标签大小为:

|         |

我想知道标签何时充满了文字,例如:

|.........| 

我需要用点填充,直到达到textFields宽度。

2 个答案:

答案 0 :(得分: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 :(得分: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! + "."
}