Properly Subclassing UITextField in swift

前端 未结 3 1446
一整个雨季
一整个雨季 2020-12-13 21:53

So i have these textfields that i realised that they all have same properties, so i created new class called \"UserInputs\" and extended from UITextFi

3条回答
  •  庸人自扰
    2020-12-13 22:15

    You can change border by calling delegate in UserInput

    class UserInputs: UITextField, UITextFieldDelegate{
    
        let border = CALayer()
    
        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)!
            createBorder()
            self.delegate = self
    
        }
    
        func createBorder(){
            let width = CGFloat(2.0)
            border.borderColor = UIColor(red: 55/255, green: 78/255, blue: 95/255, 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
            //print("border created")
        }
    
        func pulseBorderColor(){
            border.borderColor = UIColor.greenColor().CGColor
        }
    
        func normalColor(){
            border.borderColor = UIColor(red: 55/255, green: 78/255, blue: 95/255, alpha: 1.0).CGColor
        }
    
        func textFieldDidBeginEditing(textField: UITextField) {
            print("focused")
            pulseBorderColor()
        }
    
        func textFieldDidEndEditing(textField: UITextField) {
            print("lost focus")
            normalColor()
        }
    }
    

提交回复
热议问题