Colors SwiftUI:在同一文本视图中使用不同的颜色

Colors SwiftUI:在同一文本视图中使用不同的颜色,colors,swiftui,Colors,Swiftui,我使用了一段文字。replacingOccurrences可在问题句中显示用户的答案: Text((question.text) .replacingOccurrences(of: "_____", with: question.answers[question.userAnswer] )) .font(Font.cus

我使用了一段文字。replacingOccurrences可在问题句中显示用户的答案:

           Text((question.text)
                .replacingOccurrences(of: "_____", with:
                    question.answers[question.userAnswer]
                ))
                .font(Font.custom("ClearSans-Bold", size: 18))
                .foregroundColor(.black )
                .padding(.bottom, 20)
                .multilineTextAlignment(.center)
我希望用户的答案
question.answers[question.userAnswer]
与正文颜色不同(红色/绿色)(类似于所附图像),但我对SwiftUI不熟悉,因此不确定如何添加此内容


这里有一个
字符串的扩展,它几乎满足了您的需求:

extension String {
    func replacingOccurrences(of: String, with: [Text]) -> Text {
        return self.components(separatedBy: of).enumerated().map({(i, s) in
            return i < with.count ? Text(s) + with[i] : Text(s)
        }).reduce(Text(""), { (r, t) in
            return r + t
        })
    }
}
结果:


您可能需要添加一些额外的代码,以处理答案数量与出现的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?您可以使用不同的修饰符连接
文本
。例如,您可以有
Text(“Hello”).foregroundColor(.red)+Text(“World”).foregroundColor(.blue)
struct ContentView: View {

    let question: String = "The witch found the concoction extremely _____. _____ makes better ones."

    let answers: [String] = ["nauseate", "A friend of her's"]

    var body: some View {
        question.replacingOccurrences(of: "_____", with: self.answers.map({s in Text(s).foregroundColor(.red)})).foregroundColor(.secondary)
    }
}