【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-31
      • 2019-03-24
      • 2011-07-11
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      相关资源
      最近更新 更多