Я хочу добавить значок / изображение в UITextField. Значок / изображение следует оставить для заполнителя.
Я пробовал это:
var imageView = UIImageView();
var image = UIImage(named: "email.png");
imageView.image = image;
emailField.leftView = imageView;
Спасибо.
emailField.leftView = UIImageView(image: UIImage(named: "search"))
:)@IBDesignable
мы можем сделать это элегантным способом, как в этом примере: stackoverflow.com/a/51841433/8238512Ответы:
Попробуйте добавить
emailField.leftViewMode = UITextFieldViewMode.Always
( По умолчанию
leftViewMode
этоNever
)Обновленный ответ для Swift 4
источник
UITextFieldViewMode.Always
)? Вы хоть представляете, что не сработало? (например, он компилировался?)emailTextField
действительно ли он меняется? А вы уверены, что изображение есть? Например, создайте другой UIImageView и загрузитеimage
в него, чтобы убедиться, что он работает.imageView1.frame = CGRect(x: 5, y: 0, width: userName.frame.height, height: userName.frame.height) view.addSubview(imageView1)
У Сахила есть отличный ответ, и я хотел использовать его и расширить до @IBDesignable, чтобы разработчики могли добавлять изображения в свои поля UITextFields на раскадровке.
Swift 4.2
Что здесь происходит?
Этот дизайн позволяет:
Ноты
Возможность проектирования в раскадровке
Во время выполнения
источник
Я просто хочу добавить сюда еще кое-что:
Если вы хотите добавить изображение
UITextField
слева, используйтеleftView
свойствоUITextField
Примечание: Не забудьте набор
leftViewMode
дляUITextFieldViewMode.Always
и праваrightViewMode
наUITextFieldViewMode.Always and
дефолтUITextFieldViewModeNever
например, для
Для добавления изображения слева
Для добавления изображения с правой стороны
ПРИМЕЧАНИЕ: нужно позаботиться о некоторых вещах, добавляя изображение
UITextField
с левой или с правой стороны.Не забудьте указать рамку,
ImageView
которую вы собираетесь добавитьUITextField
пусть imageView = UIImageView (кадр: CGRect (x: 0, y: 0, ширина: 20, высота: 20))
если фон вашего изображения белый, то изображение не будет отображаться на
UITextField
если вы хотите добавить изображение в определенную позицию, которую необходимо добавить
ImageView
в качестве подвидаUITextField
.Обновление для Swift 3.0
@Mark Moeykens Красиво расширил его и сделал @IBDesignable .
Я изменил и добавил еще несколько функций (добавьте нижнюю строку и отступ для правого изображения) в этом.
ПРИМЕЧАНИЕ: если вы хотите добавить изображение с правой стороны, вы можете выбрать
Force Right-to-Left
опцию вsemantic
построителе интерфейса (но для правого заполнения изображения не будет работать, пока вы не переопределите метод rightViewRect).Я изменил это и могу скачать источник отсюда ImageTextField
источник
Другой способ, вдохновленный предыдущими постами, сделать расширение.
Можем поставить изображение справа или слева
Использование:
Наслаждаться :)
источник
Для создания отступов мне нравится помещать изображение внутри представления контейнера. Вы можете удалить цвет фона, когда будете довольны размещением значка.
источник
для Swift 3.0 добавьте изображение слева от текстового поля
источник
Swift 5
Я создал расширение
Результат
источник
2020 - разумное решение
По поводу этого безумия от Apple.
Вот, пожалуй, самый «ясный» и простой способ сделать это:
Во-первых, необходимо правильно переместить текст.
Обратите внимание на этот критический QA: https://stackoverflow.com/a/27066764/294884
продолжая, теперь мы должны сделать и переместить левое изображение:
Кажется, это самый ясный и надежный способ сделать это.
источник
Я создал простой файл IBDesignable. Используйте его, как хотите. Просто подтвердите свой UITextField этому классу.
источник
Другой способ установить значок заполнителя и установить отступ в TextField.
источник
Swift 3.1
источник
Вы можете поместить эту функцию в свой глобальный файл или выше своего класса, чтобы иметь к нему доступ во всем приложении. После этой процедуры вы можете вызвать эту функцию в соответствии с вашими требованиями в приложении.
источник
Почему бы вам не выбрать самый простой подход. В большинстве случаев вы хотите добавить значки, такие как font awesome ... Просто используйте библиотеку font awesome, и было бы так же легко добавить значок в текстовое поле, как это:
Вам нужно сначала установить эту быструю библиотеку: https://github.com/Vaberer/Font-Awesome-Swift
источник
Это модифицированная версия ответа Марка Мойкенса с добавленным отступом между изображением и текстом и регулируемым размером изображения на случай, если это кому-то понадобится.
Swift 4
источник
Swift 5
Подобно @Markus, но в Swift 5 :
источник
SwiftUI
Полученные результаты
источник
Используя расширение в Swift4, мы можем легко разместить изображение справа или слева с отступом к TextField.
Используйте код, как для настройки левого изображения: -
Вывод :)
источник