Я реализовал неопределенный 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
}
}