Как настроить размер UITextField.leftView? - PullRequest
1 голос
/ 29 мая 2020

Я безуспешно пытаюсь изменить размер UIImageView, который является leftView моего UITextField. Изображение всегда огромно. Я хотел бы, чтобы он имел ту же высоту, что и мой UITextField. Вот что я пробовал:

Результат:

enter image description here

let topContainer: UIView = {
    let view = UIView()
    view.layer.borderWidth = 1.0
    view.layer.borderColor = UIColor.appGrayExtraLightGray.cgColor
    view.layer.cornerRadius = 5
    view.clipsToBounds = true
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

let emailField: UITextField = {
    let view = UITextField()
    view.backgroundColor = UIColor.orange
    view.text = "myEmailAddress@gmail.com"
    view.font = UIFont.systemFont(ofSize: 14)
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

let s = view.safeAreaLayoutGuide

    topContainer.addSubview(emailField)
    emailField.topAnchor.constraint(equalTo: topContainer.topAnchor, constant: spacing).isActive = true
    emailField.leadingAnchor.constraint(equalTo: topContainer.leadingAnchor, constant: spacing).isActive = true
    emailField.trailingAnchor.constraint(equalTo: topContainer.trailingAnchor, constant: -spacing).isActive = true
    emailField.bottomAnchor.constraint(equalTo: topContainer.bottomAnchor, constant: -spacing).isActive = true

    /**Mail and clear button on eitherisde of textField*/
    let mailView = UIImageView.init(frame: CGRect.init(x: 0, y: 0, width: 15, height: 15)) // Chaning the GREct has no effect on the size!!
    mailView.image = UIImage.init(named: "mailGrayFilled")
    emailField.leftView = mailView
    emailField.leftViewMode = .always
    emailField.clearButtonMode = .always

    view.addSubview(topContainer)
    topContainer.topAnchor.constraint(equalTo: s.topAnchor, constant: spacing).isActive = true
    topContainer.leadingAnchor.constraint(equalTo: s.leadingAnchor, constant: spacing).isActive = true
    topContainer.trailingAnchor.constraint(equalTo: s.trailingAnchor, constant: -spacing).isActive = true

1 Ответ

1 голос
/ 29 мая 2020

Помещение UIImageView в контейнер UIView, похоже, решает проблему, когда я тестирую ваш код. Это также может позволить вам настроить заполнение в соответствии с вашими потребностями.

let iconContainer = UIView(frame: CGRect(x: 0, y: 0, width: 25, height: 15))
let mailView = UIImageView(frame: CGRect(x: 0, y: 0, width: 15, height: 15))
mailView.image = UIImage(named: "mailGrayFilled")
mailView.contentMode = .scaleAspectFit
iconContainer.addSubview(mailView)
emailField.leftViewMode = .always
emailField.leftView = iconContainer
emailField.clearButtonMode = .always
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...