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) 
}

而已! 请让我知道这对你有没有用!