【发布时间】:2019-09-21 12:57:14
【问题描述】:
是否可以更改SwiftUI.TextField 中的占位符文本颜色?
【问题讨论】:
-
嘿,我添加了一个
CustomTextField以使占位符易于使用。 (就像它应该的那样)。看看吧。
是否可以更改SwiftUI.TextField 中的占位符文本颜色?
【问题讨论】:
CustomTextField 以使占位符易于使用。 (就像它应该的那样)。看看吧。
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
)
}
}
【讨论】: