Добавьте метку над UITextField из пользовательского класса - PullRequest
0 голосов
/ 01 мая 2020

Я хочу создать пользовательский класс TextField, в который я могу добавить метку (как показано ниже) из свойства IBInspectable в раскадровке.

Focused State

enter image description here

Состояние по умолчанию

enter image description here

Мне удалось достичь Сфокусированное и не сфокусированное состояние TextField в пользовательском классе, но не может понять, как разместить UILabel над TextField над пользовательским классом.

Вот то, что я пробовал до сих пор

@IBDesignable class CustomTextField: UITextField {

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupTextField()
    }

    required init?(coder: NSCoder) {
         super.init(coder: coder)
        setupTextField()
    }

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        self.setupTextField()
    }

    private func setupTextField() {
        applyDefaultStyle()
        addTarget(self, action: #selector(applyActiveStyles), for: UIControl.Event.editingDidBegin)
        addTarget(self, action: #selector(applyDefaultStyles), for: UIControl.Event.editingDidEnd)

        let label = UILabel()
        label.text = "First name"
        addSubview(label)
        label.bottomAnchor.constraint(equalTo: topAnchor, constant: -10).isActive = true
        label.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 0).isActive = true
    }

    .
    .
    .

}

Но ярлык не виден.

1 Ответ

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

Добавьте ограничения для маркировки влево и вертикально по центру и не забудьте установить translatesAutoresizingMaskIntoConstraints в false

 private func setupTextField() {
      applyDefaultStyle()
      addTarget(self, action: #selector(applyActiveStyles), for: UIControl.Event.editingDidBegin)
      addTarget(self, action: #selector(applyDefaultStyles), for: UIControl.Event.editingDidEnd)

      let label = UILabel()
      label.text = "First name"
      addSubview(label)
    label.translatesAutoresizingMaskIntoConstraints = false
    label.leftAnchor.constraint(equalTo: leftAnchor, constant: 10).isActive = true
    label.bottomAnchor.constraint(equalTo: topAnchor, constant: -2).isActive = true
  }

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...