我有一个句子。我必须给那句话中的四个单词涂黑颜色。
这就是我尝试过的方式...
在viewDidLoad
中,
rangeArray = ["Knowledge","Events","Community","Offers"]
for text in rangeArray {
let range = (bottomTextLabel.text! as NSString).range(of: text)
let attribute = NSMutableAttributedString.init(string: bottomTextLabel.text!)
attribute.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.black , range: range)
self.bottomTextLabel.attributedText = attribute
}
但是使用此代码,我没有将所有四个单词都涂成黑色,而是只得到了黑色的“ Offers”。我在做什么错...?
答案 0 :(得分:1)
在您的代码中,您正在为self.bottomTextLabel.attributedText
的每次运行更新for loop
。
相反,您必须
NSMutableAttributedString
创建一个sentence
,attributes
和rangeArray
attrStr
设置为attributedText
中的bottomTextLabel
。这就是我要说的,
if let sentence = bottomTextLabel.text {
let rangeArray = ["Knowledge","Events","Community","Offers"]
let attrStr = NSMutableAttributedString(string: sentence)
rangeArray.forEach {
let range = (sentence as NSString).range(of: $0)
attrStr.addAttribute(.foregroundColor, value: UIColor.black, range: range)
}
self.bottomTextLabel.attributedText = attrStr
}