文本字段中的SwiftUI颜色输入 [英] SwiftUI color input in textfield

查看:21
本文介绍了文本字段中的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆