我有一个关于在UITextField上设置下划线的问题。 我试图在每一端用条形下划线,如下所示。
我尝试了以下内容并得到了这个。右端没有酒吧。
extension UITextField {
func underline() {
let borderWidth = CGFloat(1.0)
let endBorderHeight = CGFloat(10.0)
let bottom = CALayer()
bottom.frame = CGRect(
x: 1,
y: self.frame.height - borderWidth,
width: self.frame.width - 2,
height: borderWidth)
bottom.borderWidth = borderWidth
bottom.borderColor = UIColor.lightGrayColor().CGColor
let leftEndBorder = CALayer()
leftEndBorder.frame = CGRect(
x: 0,
y: self.frame.height - endBorderHeight,
width: borderWidth,
height: endBorderHeight)
leftEndBorder.borderWidth = borderWidth
leftEndBorder.borderColor = UIColor.lightGrayColor().CGColor
print(bottom.frame.width)
let rightEndBorder = CALayer()
rightEndBorder.frame = CGRect(
x: self.frame.width - 1,
y: self.frame.height - endBorderHeight,
width: borderWidth,
height: endBorderHeight)
rightEndBorder.borderWidth = borderWidth
rightEndBorder.borderColor = UIColor.lightGrayColor().CGColor
self.layer.addSublayer(leftEndBorder)
self.layer.addSublayer(bottom)
self.layer.addSublayer(rightEndBorder)
self.layer.masksToBounds = true
}
}
我可以在左侧制作栏,但由于 rightEndBorder 错误的x位置而难以制作右侧?
谁能告诉我我做错了什么?
-----编辑
我尝试将rightEndBorder的x位置设置为200,它给了我以下内容。
但是如果我试图把它设置为300,我就不会再看到它了。
-----编辑
检查整个文本字段是否显示在屏幕上。
-----编辑
我想是改变textField宽度的前导和尾随约束。
-----解决方案
问题是我在textField上有前导和尾随约束,并且这些约束在插入unline后改变了宽度。搜索谷歌后,我认为在应用约束后我必须使用下划线,该约束在函数 viewDidLayoutSubviews()中。
答案 0 :(得分:1)
从评论部分重新输入作为答案。
问题似乎是视图被切断(因此您将看不到右边框)或右侧边框在设置后向右移动。怀疑这种情况的原因来自你的照片,右边框位于x = 200处,因为它沿着底部边界线已经过了一半,但应该只是沿着该线的40%。
<强>更新强>
这个问题的正确答案是施加的限制导致文本字段宽度发生变化。