TextField中的占位符文本颜色

Ser*_*gey 1 textfield swift swiftui

是否可以在其中更改占位符文本的颜色SwiftUI.TextField

Moj*_*ini 7

SwiftUI不支持AttributedString,尚无直接支持。但是您可以使用以下几行代码构建自定义占位符:

ZStack自己使用和实现占位符:

var body: some View {
    ZStack(alignment: .leading) {
        if text.isEmpty {
            Text("Placeholder")
                .foregroundColor(.red)
        }
        TextField("", text: $text)
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以根据需要对占位符进行任何自定义。

-自定义TextField(带有占位符)

您始终可以创建自己的自定义,View以在所有地方使用:

struct CustomTextField: View {
    var placeholder: Text
    @Binding var text: String
    var editingChanged: (Bool)->() = { _ in }
    var commit: ()->() = { }

    var body: some View {
        ZStack(alignment: .leading) {
            if text.isEmpty { placeholder }
            TextField("", text: $text, onEditingChanged: editingChanged, onCommit: commit)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用法TextField带占位符)

struct ContentView: View {
    @State var text = ""

    var body: some View {
        CustomTextField(
            placeholder: Text("placeholder").foregroundColor(.red),
            text: $text
        )
    }
}
Run Code Online (Sandbox Code Playgroud)