Добавить изображение в UITextField в Xcode?

enter image description here

Мне нужно реализовать концепцию dropdown в Xcode.

Для этой цели я использую UIPickerview.

Этот pickerView загружает, когда текстовое поле прослушивается (при событии textFieldDidBeginEditing:).

Вопрос:

Есть ли способ, чтобы добавить изображение в TextField?

Изображение похоже на метку стрелки, по которой пользователь может понять, что появляется dropdown при нажатии TextField. Как я могу это сделать?

Ответ 1

UITextField имеет свойство rightView, если у вас есть это изображение - enter image description here, тогда вы можете легко установить объект ImageView вправо:

UITextField *myTextField = [[UITextField alloc] init];

myTextField.rightViewMode = UITextFieldViewModeAlways;
myTextField.rightView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"downArrow.png"]];

Ответ 2

В Swift:

textField.leftViewMode = UITextFieldViewMode.Always
textField.leftView = UIImageView(image: UIImage(named: "imageName"))

Ответ 3

Вы можете поместить UIImageView влево от вашего UITextField.

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(96, 40, 130, 20)];
[textField setLeftViewMode:UITextFieldViewModeAlways];
textField.leftView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"searchIccon.png"]];

Ответ 4

Swift 3.0

txtField.rightViewMode = .always
txtField.rightView = UIImageView(image: UIImage(named: "selectdrop"))

TextField с иконкой DropDown

Ответ 5

Эй, вы хотите видеть выпадающий список, а затем посмотрите этот пользовательский раскрывающийся список.

и для этого требования используйте этот код

UITextField *txtstate =[[UITextField alloc]init]; [txtstate setFrame:CGRectMake(10, 30,170, 30)]; 
txtstate.delegate=self; 

[email protected]"Fruits"; 

txtstate.borderStyle = UITextBorderStyleLine; 

txtstate.background = [UIImage imageNamed:@"dropdownbtn.png"]; 

[txtstate setAutocorrectionType:UITextAutocorrectionTypeNo]; 
[self.view addSubview:txtstate];

и установите стиль рамки поля текста none..

Ответ 6

Чтобы добавить правильные поля /paddings между изображением и текстовым полем, попробуйте этот ниже код. Расширение ответа @King-Wizard.

Здесь высота моего TextField равна 44 Проверьте прикрепленное изображение для справки.

Быстрая версия:

emailTF.leftViewMode = .Always
let emailImgContainer = UIView(frame: CGRectMake(emailTF.frame.origin.x, emailTF.frame.origin.y, 40.0, 30.0))
let emailImView = UIImageView(frame: CGRectMake(0, 0, 25.0, 25.0))
emailImView.image = UIImage(named: "image1")
emailImView.center = emailImgContainer.center
emailImgContainer.addSubview(emailImView)
emailTF.leftView = emailImgContainer

введите описание изображения здесь

Ответ 7

UITextField обладает следующим свойством:

@property(nonatomic, retain) UIImage *background

Пример:

UITextField *myTextField = [[UITextField alloc] init];
myTextField.background = [UIImage imageNamed:@"myImage.png"];

Ответ 8

Шаг 1: Добавьте этот класс в свой проект и добавьте его в свой класс textFiled в инспекторе идентификации,

class MyCustomTextField: UITextField {

    @IBInspectable var inset: CGFloat = 0

    @IBInspectable var leftImage: String = String(){
        didSet{
            leftViewMode = UITextFieldViewMode.Always
            leftView = UIImageView(image: UIImage(named: leftImage))
        }
    }

    override func textRectForBounds(bounds: CGRect) -> CGRect {
        return CGRectInset(bounds, inset, inset)
    }

    override func editingRectForBounds(bounds: CGRect) -> CGRect {
        return textRectForBounds(bounds)
    }

    override func leftViewRectForBounds(bounds: CGRect) -> CGRect {
        return CGRectInset(CGRectMake(0, 2, 40, 40), 10, 10) //Change frame according to your needs
    }
}

Шаг 2: Установите текстовые вставки и левое изображение из конструктора интерфейса.

введите описание изображения здесь

Шаг 3: Наслаждайтесь.