如何在Swift字符串中加下划线并更改特定单词的颜色?

时间:2016-02-17 03:20:50

标签: string swift formatting

我的数据源中有以下字符串。

在过去的两周内,您经常被以下任何一个问题困扰?

当字符串显示在应用程序上时,我希望"持续2周"下划线和不同的颜色比其余的字符串。

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用NSAttributedString为标签的文字加下划线,并使用textColor属性更改其颜色,如下所示:

let underlineAttribute = [NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue]
let underlineAttributedString = NSAttributedString(string: "StringWithUnderLine", attributes: underlineAttribute)
myLabel.attributedText = underlineAttributedString
myLabel.textColor = [UIColor whiteColor];

答案 1 :(得分:0)

Swift 5 和 4.2:

您可以从标签中调用此函数,以便为文本中的某些词添加下划线并更改其颜色:

extension UILabel {
    func underlineWords(words: [String]) {
        guard let textString = text else {
            return
        }
        let attributedText = NSMutableAttributedString(string: text ?? "")
        for word in words {
            let rangeToUnderline = (textString as NSString).range(of: word)
            attributedText.addAttribute(NSAttributedString.Key.underlineStyle,
                                        value: NSUnderlineStyle.single.rawValue,
                                        range: rangeToUnderline)
            attributedText.addAttribute(NSAttributedString.Key.foregroundColor,
                                        value: UIColor.red,
                                        range: rangeToUnderline)
        }
        isUserInteractionEnabled = true
        self.attributedText = attributedText
    }
}

您也可以使用这个已接受的答案,它使用 IB 来解决您的问题:Adding underline attribute to partial text UILabel in storyboard