Я хотел использовать собственный фон для моего UITextFields
. Это работает хорошо, за исключением того факта, что я должен использовать, UITextBorderStyleNone
чтобы это выглядело красиво. Это заставляет текст придерживаться влево без каких-либо отступов.
Можно ли установить отступ вручную, чтобы он выглядел примерно так, за UITextBorderStyleRoundedRect
исключением использования моего собственного фонового изображения?
ios
uitextfield
padding
Себастьян Врамба
источник
источник
*paddingView
несколько текстовых полей?Я создал реализацию этой категории и добавил ее в начало
.m
файла.Исходя из ссылки, предоставленной Петром Блясиаком. Казалось, проще создать целый новый подкласс, а также проще добавить дополнительный
UIView
. Тем не менее, кажется, что чего-то не хватает, чтобы не иметь возможности управлять заполнением внутри текстового поля.Решение Swift 4:
источник
Версия Swift 3 для Xcode> 6, где вы можете редактировать значение вставки в Интерфейсном Разработчике / Раскадровке.
источник
override func placeholderRectForBounds(bounds: CGRect) -> CGRect { return CGRectInset(bounds, inset, inset) }
@IBDesignable
и@IBInspectable
делать, то есть этот пост на nshipsterreturn super.textRectForBounds(CGRectInset(bounds, inset, inset))
будете корректно обрабатывать смещение от дополнительных видов.Изменить: все еще работает в iOS 11.3.1
В iOS 6
myTextField.leftView = paddingView;
вызывает проблемуЭто решает проблему
Для выровненного по правому краю текстового поля используйте
CATransform3DMakeTranslation(-5, 0, 0)
как упоминание latenitecoder в комментарияхисточник
Хороший подход для добавления отступов в UITextField - это создать подкласс и добавить свойство edgeInsets. Затем вы устанавливаете edgeInsets, и UITextField будет отображаться соответственно. Это также будет работать правильно с пользовательским набором leftView или rightView.
OSTextField.h
OSTextField.m
источник
Просто создайте подкласс UITextField следующим образом:
Это добавляет горизонтальный отступ 10 пунктов с каждой стороны.
источник
Objective C Code
MyTextField.h
MyTextField.m
источник
Установите класс текстового поля PaddingTextField и настройте свой отступ по своему усмотрению.
Наслаждайся этим
источник
Основываясь на ответе Evil Trout, вы можете создать категорию, чтобы упростить ее использование в нескольких приложениях.
Заголовочный файл:
Файл реализации:
Пример использования
Надеюсь, это поможет вам, ребята
ура
источник
Swift версия:
Так что вы можете присвоить значение в IB
источник
IBInspectable
позволяет применять установочный код во время выполнения, поэтому просто введите свой номер,Interface Builder
и он будет работать.Clear Button
. Ваша кнопка очистки не будет видна, если применить это решение.Вы не можете установить отступы. Вместо этого имейте
UIView
свой фоновый рисунок и егоUITextField
внутреннюю часть. УстановитеUITextField
ширину какUIViewWidth-(paddingSize x 2)
и высоту аналогичным образом, а затем установите ее в точкеpaddingSize,paddingSize
.источник
Просто создайте подкласс UITextField следующим образом ( версия Swift ):
Это добавляет горизонтальный отступ 25.0 пунктов с обеих сторон.
источник
Я основывался на решении Нейта, но потом обнаружил, что это вызывает проблемы, когда вы используете свойства leftView / rightView, поэтому лучше настроить реализацию super, потому что она будет учитывать левое / правое представление.
источник
Обновленная версия для Swift 3:
источник
Установить отступы для UITextField с помощью UITextBorderStyleNone: Swift
Основываясь на наиболее популярном ответе @Evil Trout, я создал собственный метод в своем классе ViewController, как показано ниже:
Теперь я могу вызвать этот метод внутри (метод viewDidLoad) и отправить любой из моих TextFields в этот метод и добавить отступы для правого и левого, а также задать цвет текста и фона, написав всего одну строку кода, как показано ниже:
Это отлично работало на iOS 7! Я знаю, что добавление слишком большого количества представлений может сделать этот класс более тяжелым для загрузки. Но когда меня беспокоили трудности других решений, я обнаружил, что более склонен к этому методу и более гибок в использовании этого способа. ;)
Спасибо за Взлом "Злой Форели"! (лук)
Я подумал, что мне следует обновить фрагмент кода этого ответа с помощью Swift:
Поскольку Swift позволяет нам писать расширения для существующих классов, давайте напишем это таким образом.
Применение:
Надеюсь, это будет полезно для кого-то еще там!
Ура!
источник
Вот как этого добиться в SWIFT
Ресурс
источник
Версия Swift 2.0:
источник
^ эти предложения отлично подходят для тех, кто программно создает интерфейс.
Но есть два LAZY EASY WAYS для тех из нас, кто использует конструктор интерфейса Xcode:
проще: поместите UIImageView за текстовым полем
проще всего: измените стиль рамки на свой простой черный квадрат (второй слева), затем добавьте изображение в качестве фонового изображения. Изображение имеет приоритет над квадратом, поэтому вы по-прежнему получаете отступы, необходимые для обычного фона изображения, при этом квадрат фактически не рисуется.
РЕДАКТИРОВАТЬ: вы также можете использовать черную сферу (третья слева опция при выборе UITextBox в IB), она не работает с крайним правым, стиль "графическая сфера".
источник
Если кто-то ищет
Swift 4.0
версию, то нижеextension
работает. У этого естьLeft
иRight
дополнение дляUITextField
. На самом деле этоIBInspectable
для раскадровки. Вы можете установить значение непосредственно из Интерфейсного Разработчика / Раскадровки. Это проверенный код в версии Swift 4.0 и Xcode 9.0Имейте в виду, что если вы хотите включить
Clear Button
то же самое,UITextField
то вы должны оставить пустое поле справа.источник
Лучший способ сделать это - просто создать класс, используя подкласс UITextField и в файле .m
выполнив это, перейдите на раскадровку или XIB и нажмите на инспектор идентичности и замените UITextfield своим собственным «CustomTextField» в опции класса.
Примечание: если вы просто дадите отступ с автоматическим макетом для текстового поля, тогда ваше приложение не будет работать и отображать только пустой экран.
источник
Версия Swift 3:
источник
Ответ Нейта Флинка мой любимый, но не забывайте о правом / левом взглядах. Например, для
UITextField
подкласса:Выше кода установить правый отступ для
rightView
офUITextField
.источник
Swift 3 Solution
источник
Вот код Swift для заполнения в UITextfield
и звоните используя
источник
Вы можете использовать категорию. установить отступы влево и вправо
UITextField + Padding.h
UITextField + Padding.m
вы можете установить заполнение следующим образом self.phoneNumTF.paddingValue = 10.f; или self.phoneNumTF.leftPadding = 10.f;
источник
Ответ @Evil форели великолепен. Я использую этот подход уже довольно давно. Единственное, чего ему не хватает, это «иметь дело с многочисленными текстовыми полями». Я пробовал другие подходы, но, похоже, не работает.
Подкласс UITextField просто для добавления отступов не имеет никакого смысла для меня. Итак, я перебрал все поля UITextFields, чтобы добавить заполнение.
источник
textfieldarray
во второмif
блоке не определено , я успешно использовал этот фрагмент (спасибо!) После замены содержимого второгоif
наfor(id subSubView in [view subviews]){[self addPaddingToAllTextFields:subSubView];}
Решение Броди сработало идеально для меня. Мне пришлось добавить вид сбоку на текстовое поле и добавить дополнительные отступы. Таким образом, благодаря реализации пользовательского свойства UIEdgeInsets для подкласса UITextField мне удалось решить эту задачу. Я собираюсь использовать этот новый подкласс во всех моих проектах.
источник
Лучшее решение, которое я нашел, - это категория. Вот как я добавляю отступы 5 пунктов влево и вправо:
# Прагмы предназначены только для удаления раздражающих предупреждений
источник
добавит границу, которая работала как отступ для меня.
источник
Другое соображение заключается в том, что, если у вас есть более одного,
UITextField
где вы добавляете отступы, это создать отдельноеUIView
для каждого текстового поля - потому что они не могут быть общими.источник