SwiftUI中TextField中键入单词的多种颜色

时间:2020-07-11 10:52:05

标签: swift swiftui

如果是我会写的文字

Text("Hello ")+Text("world").foregroundColor(.yellow)

TextField / TextEditor中我可以做什么?

1 个答案:

答案 0 :(得分:0)

我找到了一个可怕的 SwiftUI解决方案:

@State private var text = "Hello world"

var body: some View {
    VStack {
        ZStack(alignment: .topLeading) {
            
            TextEditor(text: $text)
                .foregroundColor(.clear)
            
            text
                .split(separator: " ")
                .map {
                    if $0 == "world" {
                        return Text($0 + " ").foregroundColor(.red)
                    } else {
                        return Text($0 + " ")
                    }
                }
                .reduce(Text(""), +)
                .padding(.vertical, 8.5)
                .padding(.horizontal, 5)
        }
    }.padding()
}

此方法存在的问题:

  1. TextEditor中的文本带有填充
  2. 默认情况下,TextEditor的背景为白色,因此我不得不在ZStack中将其下移,从而无法在文本编辑器中触摸Text