2017-01-16 64 views
0

我有一个UILabel,其最大行数为2,并且有一个单词包装属性。这是在故事板中完成的。在UILabel Word包装属性后添加'...'

我需要在最后缠绕的单词后面添加一个'...',这些单词最终被缠绕。

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

  • 测试标签是否已被截断,并将“...”附加到已经存在的标签。
  • 以编程方式使用属性文本劫持故事板。
  • 尝试使用截尾 - 无法使用它,因为它会像“Highli ...”一样切断单词。
+0

@Rikh正确 - 它半路截断,这不是客户想要什么。 > _ < –

回答

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 
+0

这工作!谢谢! –