Изменить текстовое поле на фокус - PullRequest
0 голосов
/ 13 мая 2019

Я реализовал неопределенный UITextField - поэтому я добавил две функции, а именно underlined() и underlinedGrey.

Я отлично работаю, но я хочу, чтобы текстовое поле изначально было textfield.underlinedGrey(), как только текстовое поле фокусируется: textfield.underlined().

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

Редактировать:

extension UITextField {

    func clear () {
        self.layer.sublayers?.forEach {
            if $0 is CAGradientLayer {
                $0.removeFromSuperlayer()
            }
        }
    }

    func underlined(){
        clear()
        let color = UIColor(red: 11/255, green: 95/255, blue: 244/255, alpha: 1).cgColor
        let sndColor = UIColor(red: 124/255, green: 206/255, blue: 254/255, alpha: 1).cgColor

        let gradient: CAGradientLayer = CAGradientLayer()
        gradient.colors = [color, sndColor]
        gradient.locations = [0.0, 0.8]
        gradient.startPoint = CGPoint(x: 0, y: 0)
        gradient.endPoint = CGPoint(x: 1, y: 0)
        let width = CGFloat(3.0)
        gradient.frame = CGRect(x: 0, y: self.frame.size.height - width, width:  self.frame.size.width, height: self.frame.size.height)

        self.layer.insertSublayer(gradient, at: 0)
        self.layer.masksToBounds = true
    }

    func underlinedGrey(){
        clear()
        let color = UIColor(red: 112/255, green: 112/255, blue: 112/255, alpha: 0.4).cgColor

        let border = CALayer()
        let width = CGFloat(3.0)
        border.borderColor = color
        border.frame = CGRect(x: 0, y: self.frame.size.height - width, width:  self.frame.size.width, height: self.frame.size.height)
        border.borderWidth = width
        self.layer.addSublayer(border)
        self.layer.masksToBounds = true
    }
}

1 Ответ

1 голос
/ 13 мая 2019

Соответствует UITextFieldDelegate, затем реализует

func textFieldDidBeginEditing(_ textField: UITextField) {
  textField.underlined()
}
func textFieldDidEndEditing(_ textField: UITextField) {
  textField.underlinedGrey()
}

Очистить

extension UITextField {
   func clear () {
     self.layer.sublayers?.forEach {
       if $0 is CAGradientLayer || $0.name == "MyLayer" {
          $0.removeFromSuperlayer()
       }
    }
 }

 let border = CALayer()
 border.name = "MyLayer"
 let width = CGFloat(3.0)
 border.borderColor = color
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...