在UILabel Word Wrapped Property之后添加'...'

时间:2017-01-16 16:22:01

标签: ios objective-c swift uilabel

我有一个UILabel,其最大行数为2,并包含自动换行属性。这是在故事板中完成的。

我需要在那些最终被自动换行的标签上的最后一个包装词之后添加一个'...'。

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

  • 测试标签是否被截断,并将'...'附加到已经过去的标签上。
  • 以编程方式使用属性文本劫持故事板。
  • 尝试使用Truncate Tail - 无法使用它,因为它会像“Highli ......”一样关闭这个词。

1 个答案:

答案 0 :(得分: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