Po prostu tworzę wystąpienie a UITextField
i zauważam, że tekst nie jest wyśrodkowany w pionie. Zamiast tego jest wyrównany z górną częścią mojego przycisku, co wydaje mi się trochę dziwne, ponieważ spodziewałbym się, że domyślny wyśrodkuje go w pionie. Jak wyśrodkować go w pionie, czy brakuje mi jakiegoś domyślnego ustawienia?
ios
uitextfield
alignment
Joey
źródło
źródło
textField
jest nazwa jegoUITextField
instancji - Twoja może być inna. Więc będzie miał coś takiegoUITextField *textField = [[UITextField alloc] init];
. Jeśli używasz innej nazwy zmiennej (innej niżtextField
po*
), musisz to zrobićyourDifferentVariableNameHere.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter
.textField.contentVerticalAlignment = .center
Potencjalnie wiąże się to z kilkoma komplikującymi czynnikami, o których mowa w poprzednich odpowiedziach:
To, co próbujesz wyrównać, jest ważne ze względu na to, który punkt czcionki powinien być wyśrodkowany w pionie ze względu na wysokość linii, wznoszące się, opadające itp. (Źródło: ilovetypography.com ) (Zdjęcie dzięki http://ilovetypography.com/2009 / 01/14 / niepozorne-wertykalne-metryki / )
Na przykład, gdy masz do czynienia tylko z liczbami, standardowe wyrównanie do środka nie będzie wyglądać dobrze. Porównaj różnice między dwoma poniższymi, które używają tego samego wyrównania (w poniższym kodzie), z których jedno wygląda na poprawne, a drugie wygląda nieco inaczej:
Niezupełnie w porządku z kombinacją liter:
ale wygląda dobrze, jeśli to tylko liczby
Tak więc, niestety, może wymagać trochę prób i błędów oraz ręcznej regulacji, aby wyglądał poprawnie wizualnie.
Poniższy kod umieściłem w podklasie UITextField. Wywołuje metody nadklasy, ponieważ bierze pod uwagę obecny przycisk Clear.
źródło
placeholderRectForBounds
za bardzo sięga w prawo. Mam słuszny pogląd i to się w to nie zgadza z innymi ograniczeniami. Właśnie zaimplementowałemtextRectForBounds
i nazwałem to z pozostałych 2 funkcji :)W scenorysie: Pod kontrolą -> zmień wyrównanie w pionie i poziomie, zgodnie ze swoimi potrzebami.
źródło
Działa to dobrze w przypadku tekstu textField. Ale jeśli chcesz użyć tekstu zastępczego (tekstu, który pojawi się, gdy pole tekstowe będzie puste), w systemie iOS 7 napotkasz problemy.
Rozwiązałem to, zastępując klasę TextField i
metoda.
Lubię to:
Działa na iOS7 i we wcześniejszych wersjach.
źródło