J'instancie simplement a UITextField
et je remarque que le texte ne se centre pas verticalement. Au lieu de cela, il est aligné avec le haut de mon bouton, ce que je trouve un peu étrange car je m'attendrais à ce que la valeur par défaut le centre verticalement. Comment puis-je le centrer verticalement ou y a-t-il un paramètre par défaut qui me manque?
ios
uitextfield
alignment
Joey
la source
la source
textField
est le nom de sonUITextField
instance - le vôtre peut être différent. Alors il aura quelque chose commeUITextField *textField = [[UITextField alloc] init];
. Si vous utilisez un nom de variable différent (autre chosetextField
qu'après le*
), vous devez le faire à layourDifferentVariableNameHere.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter
place.textField.contentVerticalAlignment = .center
Cela a potentiellement plusieurs facteurs de complication, dont certains ont fait allusion dans les réponses précédentes:
Ce que vous essayez d'aligner est important car le point de la police doit être centré verticalement en raison de la hauteur de la ligne, des ascendeurs, des descendants, etc. (source: ilovetypography.com ) (Image grâce à http://ilovetypography.com/2009 / 01/14 / métriques-verticales-discrètes / )
Lorsque vous ne traitez que des nombres, par exemple, l'alignement central standard ne semble pas tout à fait correct. Comparez la différence entre les deux ci-dessous, qui utilisent le même alignement (dans le code ci-dessous), dont l'un semble correct et l'autre légèrement décalé:
Pas tout à fait raison avec un mélange de lettres:
mais ça a l'air juste si ce ne sont que des chiffres
Donc, malheureusement, il peut avoir besoin d'un peu d'essais et d'erreurs et d'ajustements manuels pour obtenir un rendu visuel correct.
J'ai placé le code ci-dessous dans une sous-classe de UITextField. Il appelle des méthodes de superclasse car cela prend en compte la présence du bouton d'effacement.
la source
placeholderRectForBounds
va trop vers la droite. J'ai une vision juste et ça y va contrairement aux autres limites. Je viens de l'implémentertextRectForBounds
et de l'appeler à partir des 2 autres fonctions :)Dans le storyboard: Sous contrôle -> modifiez l'alignement vertical et horizontal, selon vos besoins.
la source
Cela fonctionne très bien pour le texte de textField. Mais si vous souhaitez utiliser du texte d'espace réservé (un texte qui apparaîtra lorsque le champ de texte est vide), sur iOS 7, vous rencontrerez des problèmes.
Je l'ai résolu en remplaçant la classe TextField et
méthode.
Comme ça:
Fonctionne pour iOS7 et les versions antérieures.
la source