如何创建带下划线的UITextField

iOS noob在这里

当我向ViewController添加默认的UITextField ,它看起来像这样:

在此处输入图像描述

我的设计师希望我让UITextField看起来像这样(即背景是透明的,只有一个下划线:

在此处输入图像描述

我该怎么做呢? 应该要求我的设计师将图像设置为UITextField背景。 图像应该是什么样的? 图像应该是=蓝色背景+下划线(减去我猜的数字)

是对的吗?

更新 :基于下面的方向(来自@Ashish Kakkad),将此代码添加到Swift中添加到ViewDidLoad:

  var bottomLine = CALayer() bottomLine.frame = CGRectMake(0.0, view.frame.height - 1, view.frame.width, 1.0) bottomLine.backgroundColor = UIColor.whiteColor().CGColor tf_editPassword.borderStyle = UITextBorderStyle.None tf_editPassword.layer.addSublayer(bottomLine) 

这几乎可行,但问题是所有边界都消失了,我只想留下底线。

@Ashish Kakkad发布了正确的代码,但它可能不适用于@ user1406716的原因是因为当文本字段中没有文本时,框架的高度和宽度为0,所以您可以尝试以下操作:

Obj-C:

 CALayer *bottomLine = [CALayer layer]; bottomLine.frame = CGRectMake(0.0f, 75 - 1, 300, 1.0f); bottomLine.backgroundColor = [UIColor whiteColor].CGColor; [myTextField setBorderStyle:UITextBorderStyleNone]; [myTextField.layer addSublayer:bottomLine]; 

斯威夫特:

 var bottomLine = CALayer() bottomLine.frame = CGRectMake(0.0, 75 - 1, 300, 1.0) bottomLine.backgroundColor = UIColor.whiteColor().CGColor myTextField.borderStyle = UITextBorderStyle.None myTextField.layer.addSublayer(bottomLine) 

这将确保即使文本字段中没有文本,该行也是可见的。

试试这段代码:

OBJ-C

 CALayer *bottomLine = [CALayer layer]; bottomLine.frame = CGRectMake(0.0f, self.frame.size.height - 1, self.frame.size.width, 1.0f); bottomLine.backgroundColor = [UIColor whiteColor].CGColor; [myTextField setBorderStyle:UITextBorderStyleNone]; [myTextField.layer addSublayer:bottomLine]; 

迅速

 var bottomLine = CALayer() bottomLine.frame = CGRectMake(0.0, view.frame.height - 1, view.frame.width, 1.0) bottomLine.backgroundColor = UIColor.whiteColor().CGColor myTextField.borderStyle = UITextBorderStyle.None myTextField.layer.addSublayer(bottomLine) 

希望能帮助到你

如果您正在使用自动布局,请尝试在viewDidLayoutSubviews方法中执行此代码。

要使用Swift 3进行更新:

 let bottomLine = CALayer() bottomLine.frame = CGRect(origin: CGPoint(x: 0, y:first.frame.height - 1), size: CGSize(width: first.frame.width, height: 1)) bottomLine.backgroundColor = UIColor.white.cgColor first.borderStyle = UITextBorderStyle.none first.layer.addSublayer(bottomLine)