我正在尝试构建一个泰语应用程序。为了显示泰语单词的发音,我想使用这三个特殊字符“\\ / -”。为了便于阅读,我想将这些字符的颜色更改为红色。\n有没有办法在 SwiftUI 中做到这一点?
\n我用它作为模型:
\nstruct Alphabet {\n var letter: String\n var byname: String\n var translation: String\n var consonantClass: ConsonantClass\n}\nRun Code Online (Sandbox Code Playgroud)\n这是视图模型:
\nlet middleConsonants: [Alphabet] = [\n Alphabet(letter: "\xe0\xb8\x81", byname: "g\xc3\xb4:- gai\\\\", translation: "Chicken", consonantClass: .middle)\n]\nRun Code Online (Sandbox Code Playgroud)\n在这里,在视图中,我想用不同的颜色显示它:
\nstruct ConsonantsListView: View {\n var vm: ConsonantsViewModel = ConsonantsViewModel()\n var consonants: [Alphabet]\n \n var body: some View {\n ForEach(0..<consonants.count, id: \\.self) { index in\n HStack {\n Spacer()\n NavigationLink(destination:\n VStack(spacing: 20) {\n Text(consonants[index].byname)\n .font(.largeTitle)\n Text(consonants[index].translation)\n }) {\n Text(consonants[index].letter)\n .font(.largeTitle)\n }\n Spacer()\n }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
在 SwiftUI 中,您可以轻松地使用运算符连接Text对象+并分配不同的颜色。
例如,这会显示一个红色的“Hello”,后跟一个绿色的“World!”
Text("Hello ")
.foregroundColor(.red)
+ Text("World!")
.foregroundColor(.green)
Run Code Online (Sandbox Code Playgroud)
在 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)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
只是一个简单的示例,但非常适合您的代码。
| 归档时间: |
|
| 查看次数: |
1819 次 |
| 最近记录: |