10
votes

SwiftUI - Comment changer la couleur du texte d'un champ de texte?

J'essaie de changer la couleur du texte de Textfield (le texte que l'utilisateur écrit) dans SwiftUI. J'essaye avec foregroundColor mais cela change la couleur du texte de l'espace réservé.

Comment faites-vous cela dans SwiftUI?

 TextField($variable, placeholder: Text("a text"))
            .foregroundColor(.green)


2 commentaires

Ce problème a été résolu avec Xcode 11 beta 3.


Mais maintenant, comment changer la couleur de l'espace réservé? Lol


3 Réponses :


15
votes

.foregroundColor en fait la couleur du texte de TextField mais uniquement lorsqu'il a une valeur par défaut, par exemple cela fonctionnera bien:

TextField(.constant("Hello World"), placeholder: Text("Type here..."))
  .foregroundColor(.green)

Mais une fois que vous supprimez tout le texte , le champ de texte perd non seulement sa couleur, mais le reste de ses modificateurs tels que son alignement. Il s'agit probablement d'un bogue dans la version actuelle, je vais donc déposer un rapport de bogue.


Mise à jour : ce problème a été résolu avec Xcode 11 beta 3 .


1 commentaires

Depuis la sortie officielle de Xcode 11 (ou peut-être plus tôt), il ne semble plus possible d'avoir un espace réservé Text ).



1
votes

La couleur du texte doit être changée pour utiliser la propriété du champ de texte .foreground color Mise à jour pour Xcode Version 11.1 (11A1027)

SwiftUI

TextField("Email", text: $email)
                .textContentType(.emailAddress)
                .padding(.init(top: 0, leading: 15, bottom:0 , trailing: 15))
                .foregroundColor(.blue)
                .textFieldStyle(RoundedBorderTextFieldStyle.init())


0 commentaires

0
votes

Utilisez background() pour définir la couleur d'arrière- foreground() et le foreground() pour définir la couleur du texte d'entrée

struct PlaygroundTestView: View {

@State var searchText = ""

var body: some View {
    
    TextField("Search", text: $searchText)
    .font(Font.system(size: 14))
    .padding()
    .background(RoundedRectangle(cornerRadius: 50).fill(Color.white))
    
    .foregroundColor(.black)
    .padding()
    .offset(x:8, y: 10)
}

}


2 commentaires

Est-ce maintenant cassé / inopérant dans Xcode 12 / iOS14? J'ai essayé de définir la couleur de premier plan, la couleur d'arrière-plan et .bold comme décrit ici et tout ce que j'obtiens est un texte gris clair pour la plupart non lisible.


"texte gris clair pour la plupart non lisible" est le texte d'espace réservé. Le texte d'entrée est mis en noir. Cela fonctionne pour Catalina / xcode 12.