UILabel截断尾部并跳过不完整的单词

Pha*_*inh 6 uilabel ios

我有一条线UILabel.它有宽度=屏幕宽度,现在的内容是(内容UILabel可以改变)

你有30秒的时间在面试中留下印象

目前,我UILabel的尾部被截断,"持续时间"这个词并不完整

self.nameLabel.lineBreakMode = NSLineBreakByTruncatingTail;
Run Code Online (Sandbox Code Playgroud)

我想要的是我想要我UILabel 仍然截断的尾巴,显示完整的单词.
如下图所示

在此输入图像描述

任何帮助或建议将非常感谢.

Hos*_*eeb 7

你可以这样做:

let labelWidth = CGRectGetWidth(label.bounds)

    let str = "You will have 30 seconds till you give us a good impression" as NSString
    let words = str.componentsSeparatedByString(" ")

    var newStr = "" as NSString

    for word in words{

        let statement = "\(newStr) \(word) ..." as NSString
        let size = statement.sizeWithAttributes([NSFontAttributeName:label.font])
        if size.width < labelWidth {
            newStr = "\(newStr) \(word)"
        }
        else{
           break
        }
    }

    newStr = newStr.stringByAppendingString(" ...")

    self.label.text = newStr as String
Run Code Online (Sandbox Code Playgroud)

想法是:我们拆分单词并尝试检查宽度,同时从开头附加字符串“...”,直到找到超出大小的单词,以防我们停止并使用这个新字符串