J'ai un TextField
à Swiftui. Quand j'applique le rembourrage comme
TextField(text, text: $value)
.padding()
le rembourrage est à l'extérieur de la zone du robinet du TextField
, c'est-à-dire en train de taper sur le rembourrage NE PAS apporter au champ de texte.
Je voudrais être capable de concentrer le TextField
même si l'utilisateur tourne sur le rembourrage.
Ajoutez de la hystack autour de votre Textfield, puis de jouer avec Hstack: Exemple:
VStack {
...
HStack {
TextField("Social security number", text: $socialNumber)
.disableAutocorrection(true)
}
.padding()
.padding(.leading, 30.0)
.padding(.trailing, 30.0)
.background(RoundedRectangle(cornerRadius: 12).fill(Theme.color.textFieldBackgroundColor))
.frame(maxWidth: 315)
...
}
.padding(.top, 0)
.frame(maxWidth: 350)
La seule façon qui a fonctionné pour moi a été d'écrire un Textfieldstyle personnalisé, puis d'ajouter .padding (.horizontal) dans le style.
struct RegisterLoginTextFieldStyle: TextFieldStyle {
var width: CGFloat
var height: CGFloat
var fontSize: CGFloat
func _body(configuration: TextField<Self._Label>) -> some View {
configuration
.frame(width: width, height: height)
.padding(5)
.padding(.horizontal)
.border(Color.black, width: 2)
.background(Color.textFieldBackground)
.font(.system(size: fontSize))
.foregroundColor(.black)
}
}
...
var body: some View {
TextField(
label,
text: $input
)
.padding(.top, 5)
.textFieldStyle(
RegisterLoginTextFieldStyle(
width: width,
height: height,
fontSize: placeholderSize
)
)
}