【问题标题】:Swift truncated label alternative textSwift 截断标签替代文本
【发布时间】:2017-09-19 10:43:36
【问题描述】:
我在水平堆栈视图控制器中有两个标签:
labelA.text = "This is text number A"
labelB.text = "This is text number B"
它们正在被截断:
[This is... This is...]
有没有办法为标签提供替代文本以显示它是否会截断原始文本,例如
labelA.alternateText = "A"
labelB.alternateText = "B"
这样显示
[A B ]
但如果可以的话,仍然会显示两个标签的全文
【问题讨论】:
标签:
swift
swift3
label
uilabel
truncation
【解决方案1】:
你可以这样做:
1:添加扩展以检查您的标签是否被截断
extension UILabel {
var isTruncated: Bool {
guard let labelText = text else {
return false
}
let labelTextSize = (labelText as NSString).boundingRect(
with: CGSize(width: frame.size.width, height: .greatestFiniteMagnitude),
options: .usesLineFragmentOrigin,
attributes: [NSFontAttributeName: font],
context: nil).size
return labelTextSize.height > bounds.size.height
}
}
2:添加字典来存储原始字符串
var dict = [Int:Any]()
3:当您添加标签时,为它们添加标签(这将代表键)
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 30, height: 50))
label.text = "This is text number A"
label.tag = 0
4:检查标签是否被截断,如果是则添加默认值并将原始值存储到您的字典中:
if label.isTruncated {
dict.updateValue(label.text, forKey: label.tag)
label.text = "A"
}
5:取回原值
let original = dict[0] // for tag 0 for example