Размер изображения внутри текстового поля не изменяется - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть настраиваемое текстовое поле, и я хочу разместить изображение на его левой стороне, но когда я запускаю приложение, размер изображения не регулируется, то есть его полная шкала, без учета ширины и высоты , Код и картинки прилагаются

класс ViewController: (в котором присутствует текстовое поле) импорт UIKit

класс Registration2ViewController: UIViewController {

  @IBOutlet weak var Email: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    Email.leftViewMode = .always
    let imageview = UIImageView()
    imageview.frame = CGRect(x: 0, y: 0, width: 5.0, height: 5.0)
    view.addSubview(imageview)
    let icon = UIImage(named: "c.png")
    imageview.image = icon
    Email.leftView = imageview


    // Do any additional setup after loading the view.
}

}

image of app

1 Ответ

0 голосов
/ 12 апреля 2020

Чтобы установить фрейм для вашего imageView, вам нужно создать подкласс UITextField и переопределить leftViewRect(forBounds:). Приведенный ниже код приведет к смещению вида 20x20 на 10 точек слева и по центру по вертикали.

class AwesomeTextField: UITextField {

    override func leftViewRect(forBounds bounds: CGRect) -> CGRect {
        let leftViewHeight: CGFloat = 20
        let y = bounds.size.height / 2 - leftViewHeight / 2
        return .init(x: 10, y: y, width: leftViewHeight, height: leftViewHeight)
    }
}

Чтобы добавить imageView к textField, вы должны сделать это:

class ViewController: UIViewController {

    @IBOutlet weak var textField: AwesomeTextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        let imageView = UIImageView()
        imageView.image = UIImage(named: "c")
        textField.leftView = imageView
        textField.leftViewMode = .always
    }
}

Make убедитесь, что вы установили соответствующее имя класса для textField в инспекторе идентичности вашей раскадровки.

...