我是 SwiftUI 的新手,并试图了解如何组合多个文本视图,例如,由于设置背景颜色,这些文本视图最终可能成为不同的视图类型。下面是我当前的代码以及我目前所实现的目标。这是可行的,但是使用 HStack 它不能正确显示从左到右的文本。
如果可能的话,我宁愿合并所有文本视图,但无法弄清楚如何做到这一点,因为某些文本视图最终成为“任何视图”。我也尝试过修改器,但它似乎从未应用背景颜色。
谢谢!
private func getTexts() -> some View {
HStack(alignment: .center, spacing: 5) {
let words = note.text.components(separatedBy: " ")
ForEach(words.indices, id: \.self) { index in
let currentWord = words[index]
if (currentWord.lowercased() == "Reading".lowercased()) {
Text(currentWord)
.padding(.all, 4)
.background(.yellow)
.clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous))
}
else {
Text(currentWord)
}
}
}
}
我也面临着和你类似的挑战。我发现一篇文章讨论了使用 AttributedString 的潜在解决方案。
struct ContentView: View {
var message1: AttributedString {
var result = AttributedString("Hello")
result.font = .largeTitle
result.foregroundColor = .white
result.backgroundColor = .red
return result
}
var message2: AttributedString {
var result = AttributedString("World!")
result.font = .largeTitle
result.foregroundColor = .white
result.backgroundColor = .blue
return result
}
var body: some View {
Text(message1 + message2)
}
}