无法为多个单词提供单独的颜色

时间:2019-05-23 11:52:51

标签: ios swift

我有一个句子。我必须给那句话中的四个单词涂黑颜色。

这就是我尝试过的方式...

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”。我在做什么错...?

1 个答案:

答案 0 :(得分:1)

在您的代码中,您正在为self.bottomTextLabel.attributedText的每次运行更新for loop

相反,您必须

  1. 使用NSMutableAttributedString创建一个sentence
  2. 根据您的attributes
  3. 添加所有相关的rangeArray
  4. 然后最后将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
}