猿问

在Swift中使用NSMutableAttributedString更改特定文本的颜色

我遇到的问题是我希望能够更改TextView中某些文本的textColor。我使用的是串联字符串,只希望将字符串追加到TextView的文本中。看来我想使用的是NSMutableAttributedString,但是在Swift中找不到如何使用它的任何资源。到目前为止,我有这样的事情:


let string = "A \(stringOne) with \(stringTwo)"

var attributedString = NSMutableAttributedString(string: string)

textView.attributedText = attributedString

从这里我知道我需要找到需要更改其textColor的单词范围,然后将它们添加到属性字符串中。我需要知道的是如何从attributedString中查找正确的字符串,然后更改其textColor。


由于我的评分太低,我无法回答自己的问题,但这是我找到的答案


我通过翻译一些代码来找到自己的答案


更改NSAttributedString中子字符串的属性


这是Swift中的实现示例:


let string = "A \(stringOne) and \(stringTwo)"

var attributedString = NSMutableAttributedString(string:string)


let stringOneRegex = NSRegularExpression(pattern: nameString, options: nil, error: nil)

let stringOneMatches = stringOneRegex.matchesInString(longString, options: nil, range: NSMakeRange(0, attributedString.length))

for stringOneMatch in stringOneMatches {

    let wordRange = stringOneMatch.rangeAtIndex(0)

    attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.nameColor(), range: wordRange)

}


textView.attributedText = attributedString

由于我想更改多个字符串的textColor,因此我将创建一个辅助函数来处理此问题,但这可用于更改textColor。


一只斗牛犬
浏览 1697回答 3
微课
3回答

蓝山帝景

Swift 2.1更新: let text = "We tried to make this app as most intuitive as possible for you. If you have any questions don't hesitate to ask us. For a detailed manual just click here." let linkTextWithColor = "click here" let range = (text as NSString).rangeOfString(linkTextWithColor) let attributedString = NSMutableAttributedString(string:text) attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor() , range: range) self.helpText.attributedText = attributedStringself.helpText是一个UILabel出口。
随时随地看视频慕课网APP
我要回答