我想知道是否有办法确定UILabel
是否完整的文字。
例如,如果a的标签大小为:
| |
我想知道标签何时充满了文字,例如:
|.........|
我需要用点填充,直到达到textFields宽度。
答案 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! + "."
}