2017-01-16 61 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

這工作!謝謝! –