Пользовательский UITextField - PullRequest
20 голосов
/ 23 февраля 2011

Как мне создать UITextField, как показано на этом изображении?

enter image description here

Кажется, он немного больше, особенно по высоте.

Ответы [ 6 ]

30 голосов
/ 13 октября 2011

Это можно сделать намного лучше и проще с растягиваемым изображением:

    UIImage *fieldBGImage = [[UIImage imageNamed:@"input.png"] stretchableImageWithLeftCapWidth:20 topCapHeight:20];
    [myUITextField setBackground:fieldBGImage];

Представьте, что фон текстового поля разделен на три части. Средняя секция, которая может быть растянута и заглушки на концах. Создайте изображение, которое должно быть достаточно длинным, чтобы содержать один пиксель этого повторяющегося раздела (очень короткое текстовое поле), а затем создать растягиваемое изображение из него, используя stretchableImageWithLeftCapWidth: topCapHeight. Передайте ширину левой торцевой крышки в 'leftCapWidth.' Вы можете также растянуть его по вертикали, но если фоновое изображение будет иметь такую ​​же высоту, как и текстовое поле, оно не будет иметь эффекта.

Если вы знакомы с 9-фрагментным масштабированием во Flash или Illustrator, это точно такая же концепция, за исключением того, что средние секции имеют ширину всего один пиксель / высоту.

Преимущество этого заключается в том, что вам не нужно беспокоиться о масштабировании нескольких многоуровневых объектов, и вы можете изменить размер текстовых полей в любое время, и фон останется в такте. Работает и на других элементах!

20 голосов
/ 23 февраля 2011

Возможно, вы захотите использовать свойства background и borderStyle UITextField.Установка borderStyle в качестве UITextBorderStyleNone и создание собственного фонового изображения для растягивания и использования в качестве свойства background будет одним из подходов.

Я предлагаю взглянуть на эти свойства в UITextFieldссылка на класс .

17 голосов
/ 30 июля 2012

Вы можете сделать это:

yourTextField.borderStyle = UITextBorderStyleNone;

yourTextField.background = [UIImage imageNamed:@"email-input.png"];

И если вы хотите добавить поле для текста внутри текстового поля, вы можете сделать это:

// Setting Text Field Margins to display the user entered text Properly

UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];

yourTextField.leftView = paddingView;
yourTextField.leftViewMode = UITextFieldViewModeAlways;
7 голосов
/ 10 мая 2013

Вы также можете сделать это через Interface Builder.

Through Interface Builder

2 голосов
/ 16 августа 2011

Возьмите uiimageview, установите его свойство image для изображения, которое вы хотите использовать в качестве фона uitextfield.И поверх этого uiimageview поместите поле uitextfield с пограничным стилем none.Это вы можете сделать прямо в конструкторе интерфейсов.

2 голосов
/ 23 февраля 2011

просто используйте следующую строку, и она должна работать

textfield_name.background = [UIImage imageNamed: @ "yourImage.png"];

здесь, yourImage - это фоновое изображение, которое вы хотите установить ...

однако, это будет работать, только если ваша кнопка не является круглой кнопкой. Таким образом, вы можете изменить тип кнопки в Интерфейсном Разработчике или использовать

textfield_name.borderstyle = UITextBorderStyleNone или UITextBorderStyleBezel

а ты р гуд2го ....!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...