最近写了一个登录页面,要求登录框与密码框均为下划线的样式。而TextField的layer属性只能设置整个边框,这时就需要重写TextField的draw方法。
import UIKit
class LoginTextField: UITextField {
//重写draw方法实现下划线TextField
override func draw(_ rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
context?.setFillColor(UIColor.black.cgColor)
context?.fill(CGRect(x: 0, y: frame.height - 1, width: frame.width, height: 1))
}
}
这时我们就成功创建了一个名为LoginTextField的子类,使用draw方法给其下边缘画了一条宽度为1的线。需要使用时,只需要将TextField实例化为LoginTextField即可,比如:
import UIKit
class LoginViewController: UIViewController {
let accountTextField = LoginTextField()
let passwordTextField = LoginTextField()
//more members...
}
最终写出的登录界面的效果如下: