Ich instanziiere einfach a UITextField
und bemerke, dass der Text nicht vertikal zentriert ist. Stattdessen ist es bündig mit der Oberseite meiner Schaltfläche, was ich merkwürdig finde, da ich erwarten würde, dass die Standardeinstellung es vertikal zentriert. Wie kann ich es vertikal zentrieren oder fehlt mir eine Standardeinstellung?
ios
uitextfield
alignment
Joey
quelle
quelle
textField
der Name seinerUITextField
Instanz steht - Ihre kann anders sein. Also wird er so etwas habenUITextField *textField = [[UITextField alloc] init];
. Wenn Sie einen anderen Variablennamen verwenden (etwas anderes alstextField
nach dem*
), müssen Sie diesyourDifferentVariableNameHere.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter
stattdessen tun .textField.contentVerticalAlignment = .center
Dies hat möglicherweise mehrere komplizierende Faktoren, von denen einige in früheren Antworten erwähnt wurden:
Was Sie ausrichten möchten, ist wichtig, da der Punkt in der Schrift aufgrund der Linienhöhe, Auf- und Abwärtsbewegungen usw. vertikal zentriert sein sollte (Quelle: ilovetypography.com ) (Bild dank http://ilovetypography.com/2009) / 01/14 / unauffällige-vertikale-Metriken / )
Wenn Sie zum Beispiel nur mit Zahlen arbeiten, sieht die Standardausrichtung der Mitte nicht ganz richtig aus. Vergleichen Sie den Unterschied zwischen den beiden folgenden, die dieselbe Ausrichtung verwenden (im folgenden Code), von denen einer korrekt und der andere leicht abweicht:
Nicht ganz richtig mit einer Mischung aus Buchstaben:
sieht aber richtig aus, wenn es nur Zahlen sind
Leider ist möglicherweise ein wenig Versuch und Irrtum und manuelle Anpassung erforderlich, damit es optisch korrekt aussieht.
Ich habe den folgenden Code in eine Unterklasse von UITextField eingefügt. Es werden Methoden der Oberklasse aufgerufen, da dies die vorhandene Schaltfläche zum Löschen berücksichtigt.
quelle
placeholderRectForBounds
erstreckt sich zu weit nach rechts. Ich habe eine rechte Sicht und sie geht im Gegensatz zu den anderen Grenzen hinein. Ich habe es gerade implementierttextRectForBounds
und von den anderen 2 Funktionen aufgerufen :)Im Storyboard: Unter Kontrolle -> Ändern Sie die vertikale und horizontale Ausrichtung entsprechend Ihren Anforderungen.
quelle
Dies funktioniert gut für textFields Text. Wenn Sie jedoch Platzhaltertext verwenden möchten (ein Text, der angezeigt wird, während das Textfeld leer ist), treten unter iOS 7 Probleme auf.
Ich habe es gelöst, indem ich die TextField-Klasse und überschrieben habe
Methode.
So was:
Funktioniert sowohl für iOS7 als auch für frühere Versionen.
quelle