2017-01-16 13 views
0

У меня есть UILabel, у которого есть max-строки из 2 и свойство оболочки слов. Это делается в раскадровке.Добавить '...' После UILabel Word Wrapped Property

Мне нужно добавить «...» после последнего завернутого слова на эти ярлыки, которые заканчиваются словом.

Возможно ли это? Я пробовал некоторые решения со всего Интернета, но они, похоже, не работали. К ним относятся:

  • Тестирование этикетки, если оно было усечено, и добавление «...» к тем, которые были.
  • Программно используя атрибутный текст для взлома раскадровки.
  • Пробовал использовать Truncate Tail - Невозможно использовать это, потому что он разрезает слово так, как «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

Это сработало! Спасибо! –