我正在尝试构建泰语应用。为了显示泰语单词的发音,我想使用这三个特殊字符“\ / -”。为了便于阅读,我想将这些字符的颜色更改为红色。 有没有办法在 SwiftUI 中做到这一点?
我将其用作模型:
struct Alphabet {
var letter: String
var byname: String
var translation: String
var consonantClass: ConsonantClass
}
这是视图模型:
let middleConsonants: [Alphabet] = [
Alphabet(letter: "ก", byname: "gô:- gai\\", translation: "Chicken", consonantClass: .middle)
]
在这里,在视图中,我想用不同的颜色显示它:
struct ConsonantsListView: View {
var vm: ConsonantsViewModel = ConsonantsViewModel()
var consonants: [Alphabet]
var body: some View {
ForEach(0..<consonants.count, id: \.self) { index in
HStack {
Spacer()
NavigationLink(destination:
VStack(spacing: 20) {
Text(consonants[index].byname)
.font(.largeTitle)
Text(consonants[index].translation)
}) {
Text(consonants[index].letter)
.font(.largeTitle)
}
Spacer()
}
}
}
}
答案 0 :(得分:3)
在 SwiftUI 中,您可以使用 Text
运算符轻松连接 +
对象并分配不同的颜色。
例如,这会显示一个红色的“Hello”,然后是一个绿色的“World!”
Text("Hello ")
.foregroundColor(.red)
+ Text("World!")
.foregroundColor(.green)
答案 1 :(得分:1)
在 iOS 15 中,属性文本将可用,这将使这变得非常容易。
在那之前,您可以用一种颜色为每个字符(或子字符串)创建一个文本:
func textRedSpecialCharacters(input: String) -> some View {
let chars = ["\\", "/", "-"]
return HStack(spacing: 0) {
ForEach(0..<input.count, id: \.self) { index in
let char = String(input[input.index(input.startIndex, offsetBy: index)])
if chars.contains(char) {
Text(char).foregroundColor(.red).font(.largeTitle)
} else {
Text(char).font(.largeTitle)
}
}
}
}
只是一个简单的例子,但非常适合您的代码。