【问题标题】:Placeholder text color in TextFieldTextField 中的占位符文本颜色
【发布时间】:2019-09-21 12:57:14
【问题描述】:

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

【问题讨论】:

  • 嘿,我添加了一个CustomTextField 以使占位符易于使用。 (就像它应该的那样)。看看吧。

标签: swift textfield swiftui


【解决方案1】:

SwiftUI 不支持 AttributedString 并且没有直接支持它(目前)。 但你可以用几行代码构建一个自定义占位符,如下所示:

使用ZStack 并自己实现一个占位符:

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

因此您可以对占位符进行任何您喜欢的自定义。

- 自定义文本字段(带占位符)

您始终可以创建自己的自定义 Views 以在任何地方使用:

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)
        }
    }
}

用法TextField 带占位符)

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

    var body: some View {
        CustomTextField(
            placeholder: Text("placeholder").foregroundColor(.red),
            text: $text
        )
    }
}

【讨论】:

  • 谢谢!我就是这么做的。我希望只有 TextField 有正确的方法
  • 如何禁用 ZStack 的可点击?我无法点击 TextField,提示在哪里。
猜你喜欢
  • 2023-02-06
  • 2020-08-03
  • 1970-01-01
  • 2023-03-10
  • 2017-05-18
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多