Я просто создаю экземпляр UITextField
и замечаю, что текст не центрируется вертикально. Вместо этого он находится на одном уровне с верхней частью моей кнопки, что я нахожу несколько странным, так как я ожидаю, что по умолчанию центр будет расположен вертикально. Как я могу отцентрировать его по вертикали, или мне не хватает какой-то настройки по умолчанию?
ios
uitextfield
alignment
детеныш
источник
источник
textField
указано имя егоUITextField
экземпляра - ваш может отличаться. Так что у него будет что-то подобноеUITextField *textField = [[UITextField alloc] init];
. Если вы используете другое имя переменной (что угодно, кромеtextField
после*
), вам нужно сделать этоyourDifferentVariableNameHere.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter
вместо.textField.contentVerticalAlignment = .center
Это может привести к нескольким осложняющим факторам, о которых упоминалось в предыдущих ответах:
То, что вы пытаетесь выровнять, важно, потому что точка шрифта должна быть вертикально отцентрирована из-за высоты линии, возрастания, спуска и т. Д. (Источник: ilovetypography.com ) (Изображение благодаря http://ilovetypography.com/2009 / 01/14 / незаметно-вертикальная метрика / )
Например, когда вы работаете только с числами, стандартное выравнивание по центру выглядит не совсем правильно. Сравните разницу между двумя ниже, которые используют одинаковое выравнивание (в приведенном ниже коде), одно из которых выглядит правильно, а другое выглядит немного не так:
Не совсем правильно со смесью букв:
но выглядит правильно, если это просто цифры
Так что, к сожалению, может потребоваться немного проб и ошибок и ручная настройка, чтобы выглядело правильно.
Я поместил приведенный ниже код в подкласс UITextField. Он вызывает методы суперкласса, поскольку учитывает наличие кнопки очистки.
источник
placeholderRectForBounds
простирается слишком много вправо. У меня есть правильное представление, и это входит в это в отличие от других границ. Я только что реализовалtextRectForBounds
и вызвал его из двух других функций :)В раскадровке: под контролем -> изменить вертикальное и горизонтальное выравнивание в соответствии с вашими потребностями.
источник
Это прекрасно работает для текста textField. Но если вы хотите использовать заполнитель текста (текст, который будет отображаться, когда текстовое поле пустое), в iOS 7 у вас возникнут проблемы.
Я решил это, переопределив класс TextField и
метод.
Как это:
Работает как для iOS7 и более ранних версий.
источник