UITextField: Сделайте его выше и расположите вводимый текст по центру вертикально

Высота по умолчанию для UITextField со стилем границы UITextBorderStyleRoundedRect составляет 31 пиксель. Для приложения для iPad я хотел бы создать UITextField с высотой 60 пикселей и расположить текст вертикально по центру, чтобы он выглядел хорошо (по умолчанию текст отображается только на несколько пикселей ниже верхней границы UITextField).

Если я сделаю следующее ...

UITextField *txtLogin = [[UITextField alloc] initWithFrame:CGRectMake(200,200,300,60)];
txtLogin.borderStyle = UITextBorderStyleRoundedRect;

... результат будет выглядеть так: http://grab.by/6jRc

Как видите, вводимый текст не центрирован по вертикали. Я попытался найти решение и обнаружил, что мне просто нужно унаследовать свой собственный класс от UITextField и переопределить метод - (CGRect) textRectForBounds: (CGRect) bounds . Мне бы хотелось создать UITextField с высотой 60 пикселей и расположить текст по центру вертикально, чтобы он выглядел хорошо (по умолчанию текст отображается только на несколько пикселей ниже верхней границы UITextField).

Если я сделаю следующее ...

UITextField *txtLogin = [[UITextField alloc] initWithFrame:CGRectMake(200,200,300,60)];
txtLogin.borderStyle = UITextBorderStyleRoundedRect;

... результат выглядит так: http://grab.by/6jRc

Как видите, вводимый текст не центрирован по вертикали. Я попытался найти решение и обнаружил, что мне просто нужно унаследовать свой собственный класс от UITextField и переопределить метод - (CGRect) textRectForBounds: (CGRect) bounds . Мне бы хотелось создать UITextField с высотой 60 пикселей и расположить текст по центру вертикально, чтобы он выглядел хорошо (по умолчанию текст отображается только на несколько пикселей ниже верхней границы UITextField).

Если я сделаю следующее ...

UITextField *txtLogin = [[UITextField alloc] initWithFrame:CGRectMake(200,200,300,60)];
txtLogin.borderStyle = UITextBorderStyleRoundedRect;

... результат выглядит так: http://grab.by/6jRc

Как видите, вводимый текст не центрирован по вертикали. Я попытался найти решение и обнаружил, что мне просто нужно унаследовать свой собственный класс от UITextField и переопределить метод - (CGRect) textRectForBounds: (CGRect) bounds . by / 6jRc

Как видите, вводимый текст не центрирован по вертикали. Я попытался найти решение и обнаружил, что мне просто нужно унаследовать свой собственный класс от UITextField и переопределить метод - (CGRect) textRectForBounds: (CGRect) bounds . by / 6jRc

Как видите, вводимый текст не центрирован по вертикали. Я попытался найти решение и обнаружил, что мне просто нужно унаследовать свой собственный класс от UITextField и переопределить метод - (CGRect) textRectForBounds: (CGRect) bounds . Однако этот метод никогда не вызывается, и согласно по этой ссылке в API Apple есть ошибка. Поэтому я ищу альтернативы, которые работают.

Что было бы хорошим решением для решения этой проблемы и достижения правильного вертикального выравнивания вводимого текста?

8
задан Community 23 May 2017 в 11:48
поделиться