文本字段中的SwiftUI颜色输入 [英] SwiftUI color input in textfield
本文介绍了文本字段中的SwiftUI颜色输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我遇到了SwiftUI的问题。 我需要在用户键入文本字段时将文本字段中的所有字母都涂成红色,将所有数字涂成黑色。
假设我有这样的代码
TextField(
"A99",
text: $viewModel.code
)
.padding([.trailing])
.multilineTextAlignment(.trailing)
如何在用户打字时实现上色目标?
我对iOS开发非常陌生,对SwiftUi也很陌生,也从未真正使用过UIKit,所以答案可能很明显,但我找不到。
推荐答案
有点粗糙,但对我来说很好。方法是
将透明的TextField
放在Text
的顶部
这就完成了所有的属性字符串函数。
您必须调整多行代码等...
struct ContentView: View {
@State var txt = "A99"
var body: some View {
ZStack (alignment: .leading) {
Text(txt) { str in
var temp: AttributedString = ""
for char in txt {
var charx = AttributedString(String(char))
charx.foregroundColor = char.isLetter ? .red : .black
temp.append(charx)
}
str = temp
}
TextField("", text: $txt).foregroundColor(.clear)
}.frame(width: 222, height: 33).border(.green)
}
}
EDIT1:包括所需的文本扩展名:
How to use Attributed String in SwiftUI
extension Text {
init(_ string: String, configure: ((inout AttributedString) -> Void)) {
var attributedString = AttributedString(string) /// create an `AttributedString`
configure(&attributedString) /// configure using the closure
self.init(attributedString) /// initialize a `Text`
}
}
这篇关于文本字段中的SwiftUI颜色输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文