Swift 3:使用单行输入的自定义UITextField
嗨,大家好!
这将是一篇简短的提示与技巧样式文章。
今天,我正在尝试(幸运地成功)构建了一个包含一个底线的自定义UITextField。 我敢肯定您之前看过,或者至少看过类似*的东西。
它并不复杂,但是使用自动布局时会变得棘手。 让我们看看如何首先制作这样的UITextField,您要做的就是创建扩展
扩展UITextField {
func setBottomLine(borderColor:UIColor){
self.borderStyle = UITextBorderStyle.none
self.backgroundColor = UIColor.clear
让borderLine = UIView()
borderLine.frame = CGRect(x:0,y:Double(self.frame.height)—高度,宽度:Double(self.frame.width),height:height)
borderLine.backgroundColor = borderColor
self.addSubview(borderLine)
}
}
您可能想知道那里到底发生了什么,我将立即解释!
在我们设置透明背景并为文本字段禁用边框后,将创建UIView。
然后,将其框架设置为高度等于1.0的线,并通过以下y点计算将其放置在文本字段的底部
Double(self.frame.height)—高度
接下来是设置背景颜色,并准备添加子视图。 很简约!
现在,对于那些想要使用自动布局的人来说,棘手的部分是:
你不敢打电话
setBottomLine(borderColor:UIColor)
在ViewDidLoad()中,由于当时尚未应用所有自动布局规则,因此导致行为不确定。
要使其正确,只需调用viewDidLayoutSubviews()函数中的方法
覆盖func viewDidLayoutSubviews(){
让lineColor = UIColor(红色:0.12,绿色:0.23,蓝色:0.35,阿尔法:1.0)
self.myTextField.setBottomBorder(borderColor:lineColor)
}
而已! 请让我知道这对你有没有用!