【问题标题】:Add '...' After UILabel Word Wrapped Property在 UILabel Word Wrapped 属性之后添加 '...'
【发布时间】:2017-05-31 13:09:06
【问题描述】:

我有一个最大行数为 2 的 UILabel 和一个自动换行属性。这是在情节提要中完成的。

我需要在那些最终被自动换行的标签上的最后一个换行字之后添加一个“...”。

这可能吗?我尝试了一些来自互联网的解决方案,但它们似乎没有奏效。其中包括:

  • 测试标签是否已被截断,并将“...”附加到已截断的标签上。
  • 以编程方式使用属性文本劫持情节提要。
  • 尝试使用 Truncate Tail - 无法使用它,因为它会像“Highli...”一样切断单词。

【问题讨论】:

  • @Rikh 正确 - 它中途截断,这不是客户想要的。 >_

标签: ios objective-c swift uilabel


【解决方案1】:

我想我明白你想要做什么。这有点草率,但它应该可以工作

 extension UILabel {
        func truncateAndFitText()
        {
            if let string = self.text
            {
                let words = string.components(separatedBy: " ")
                var lastString = ""
                var tempString = ""

                for word in words 
                {
                    (tempString == "") ? tempString.append(word) : tempString.append(" \(word)")
                    let size: CGSize = tempString.size(attributes: [NSFontAttributeName: self.font])
                    if (size.width > (self.bounds.size.width * CGFloat(self.numberOfLines)))
                    {
                        lastString.append("...")
                        break
                    }
                    else
                    {
                        lastString = tempString
                    }
                }

                self.text = lastString
            }
        }
    }

然后像这样使用它

myLabel.truncateAndFitText

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多