I am trying to make my own google material textfield in ios. Where the underline changes colour when tapped and the placeholder text moves up when the user starts to fill in the textfield. Like this:
I started by following this feed here.
So far I have the line underneath the text working, so when the user taps the line changes colour and when the user taps outside the textfield the line changes back to original colour.
I now need to work out how to make the placeholder text stay on screen and animate up, is this even possible? I don't think it is so my next thought was to add a UILabel to my custom textField class and animate that up but I cant work out how to do this? Is this even possible?
Custom textfield class:
class CustomTextField: UITextField, UITextFieldDelegate{
let border = CALayer()
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
delegate = self
createBorder()
}
required override init(frame: CGRect) {
super.init(frame: frame)
delegate = self
createBorder()
}
func createBorder(){
let width = CGFloat(2.0)
border.borderColor = UIColor(red:0.60, green:0.60, blue:0.60, alpha:1.0).cgColor
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
}
func textFieldDidBeginEditing(_ textField: UITextField) {
clearButtonMode = .whileEditing
movePlaceholderUp()
}
func textFieldDidEndEditing(_ textField: UITextField) {
movePlaceholderDown()
}
func movePlaceholderUp(){
border.borderColor = UIColor(red:0.87, green:0.30, blue:0.32, alpha:1.0).cgColor
}
func movePlaceholderDown(){
border.borderColor = UIColor(red:0.60, green:0.60, blue:0.60, alpha:1.0).cgColor
}
}