我想知道是否有方法可以确定UILabel
是否为全文的文字。 例如,如果有尺寸的标签:如何用文字填充标签直到达到宽度
| |
我想知道当标签是全文的,如:
|.........|
我需要填写其用点直到它达到了textFields的宽度。
我想知道是否有方法可以确定UILabel
是否为全文的文字。 例如,如果有尺寸的标签:如何用文字填充标签直到达到宽度
| |
我想知道当标签是全文的,如:
|.........|
我需要填写其用点直到它达到了textFields的宽度。
好吧,如果我这样做是正确,可能是你在寻找的是标签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(".")
}
创建框架和默认的文本
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! + "."
}
你可以得到标签宽度和文本宽度(通过https://stackoverflow.com/q/1324379/2442804)并比较两者 – luk2302