【发布时间】:2017-07-05 14:17:15
【问题描述】:
我正在尝试创建两个都只有底部边框的 UITextField,我从另一个 StackOverflow 获得了一些代码并且它有效。但是,当我再次为第二个 TextField 复制并粘贴代码时,它只显示一个带有底部边框的 TextField。
代码如下:
let border = CALayer()
let width = CGFloat(2.0)
border.borderColor = UIColor.gray.cgColor
border.frame = CGRect(x: 0, y: emailText.frame.size.height -
width, width: emailText.frame.size.width, height:
emailText.frame.size.height)
border.frame = CGRect(x: 0, y: passwordText.frame.size.height
- width, width: passwordText.frame.size.width, height:
passwordText.frame.size.height)
border.borderWidth = width
passwordText.layer.addSublayer(border)
passwordText.layer.masksToBounds = true
border.borderWidth = width
emailText.layer.addSublayer(border)
emailText.layer.masksToBounds = true
感谢您的帮助!
【问题讨论】:
-
您不能对两个文本字段使用相同的 vie。使用第二个边框的副本。完成这项工作的最简单方法是将变量细化为 border2 并对其进行设置和子层化。
-
您的问题可能是您只创建了
border的一个instance,并且不能添加到两个UITextFields. You have a few options - (1) create a second instance ofborder, subclassUITextField` 并让子类有一个底部边框。子类化可能更“干净”(或更多 OOP),但如果您不希望重用这种文本字段,除非在两个实例中,创建两个实例更容易 - 但将它们命名为pwBorder和emailBorder清晰度。 -
@CalvinChange 它是因为您分配了边框框架,然后再次分配它,因此它会被新的框架大小覆盖。
-
@Gihan 成功了,谢谢