如何通过swift在subviews中为多个UITextField添加底线?

时间:2015-06-17 05:04:55

标签: ios swift

我需要在子视图的所有文本字段中添加底线。

这是我的代码。

for view in self.detailView.subviews as! [UIView] {
        if let textField = view as? UITextField {
            //                if textField.text == "" {
            //                    // show error
            //                    return
            //                }

            var border = CALayer()
            var width = CGFloat(1.0)
            border.borderColor = UIColor.whiteColor().CGColor
            border.frame = CGRect(x: 0, y: textField.frame.size.height - width, width:  textField.frame.size.width, height: textField.frame.size.height)

            border.borderWidth = width

            textField.layer.addSublayer(border)
            textField.layer.masksToBounds = true

            return
        }
    }

但它只在最后一个文本字段中添加底线而不是全部。 这就是我得到的

enter image description here

我该如何解决这个问题? 谢谢!

2 个答案:

答案 0 :(得分:2)

您已在结尾添加了return关键字。

尝试使用像

这样的子视图循环整个视图
for view in self.view.subviews as! [UIView] {
            if let textField = view as? UITextField {
                var border = CALayer()
                var width = CGFloat(1.0)
                border.borderColor = UIColor.whiteColor().CGColor
                border.frame = CGRect(x: 0, y: textField.frame.size.height - width, width:  textField.frame.size.width, height: width)

                border.borderWidth = width
                textField.borderStyle = UITextBorderStyle.None
                textField.layer.addSublayer(border)
                textField.layer.masksToBounds = true
            }
        }

我添加了另外一行代码textField.borderStyle = UITextBorderStyle.None,这样如果边框样式在设计上有所不同,那么它将通过编程方式进行更改。

答案 1 :(得分:0)

非常简单易行的方法 只需放置textfield的背景图片 此图像具有白色背景和下划线,因此您使用透明背景而不是白色背景

enter image description here