Вы не можете изменить цвет заполнителя по умолчанию. Тем не менее, вы можете достичь этого, написав пользовательский TextField
, используя UITextField
или UITextView
. Вот пример, где я создал пользовательский TextArea
Просмотр с использованием UITextView
, где я могу установить собственный цвет для заполнителя. См. Мой комментарий ниже в makeUIView(_:)
struct TextArea: UIViewRepresentable {
@State var placeholder: String
@Binding var text: String
func makeCoordinator() -> Coordinator {
Coordinator(self, placeholder: placeholder)
}
func makeUIView(context: Context) -> UITextView {
let textView = UITextView()
textView.text = placeholder
// Here you can set the color for placeholder text as per your choice.
textView.textColor = .lightGray
textView.delegate = context.coordinator
return textView
}
func updateUIView(_ textView: UITextView, context: Context) {
if !text.isEmpty {
textView.text = text
textView.textColor = .black
}
}
class Coordinator: NSObject, UITextViewDelegate {
var textArea: TextArea
var placeholder: String
init(_ textArea: TextArea, placeholder: String) {
self.textArea = textArea
self.placeholder = placeholder
}
func textViewDidBeginEditing(_ textView: UITextView) {
if textView.textColor == .lightGray {
textView.text = nil
textView.textColor = .black
}
}
func textViewDidEndEditing(_ textView: UITextView) {
if textView.text.isEmpty {
textView.text = placeholder
textView.textColor = UIColor.lightGray
}
}
}
}
РЕДАКТИРОВАТЬ:
Приведенная выше текстовая область может использоваться в представлении, как это:
TextArea(placeholder: textValue, text: $textValue)