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