如何创建一个透明背景且只有边框底部的textField?
我试过这段代码:
textField.backgroundColor = .clear
let border = CALayer()
let width = CGFloat(2.0)
border.borderColor = UIColor.darkGrayColor().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
但它不起作用。
答案 0 :(得分:6)
这是使用UIView而不是CALayer的替代实现。
let line = UIView()
line.frame.size = CGSize(width: textField.frame.size.width, height: 1)
line.frame.origin = CGPoint(x: 0, y: textField.frame.maxY - line.frame.height)
line.backgroundColor = UIColor.darkGray
line.autoresizingMask = [.flexibleWidth, .flexibleTopMargin]
textField.addSubview(line)
答案 1 :(得分:3)
您的代码是正确的。问题只出现在你的边框高度,现在是" textField.frame.size.height"将其更改为1.0。(更改边框框架代码)。
答案 2 :(得分:2)
请试试这个:
txtField .borderStyle = .none
它可能对你有帮助.... :)
答案 3 :(得分:1)
extension UITextField {
func setBottomBorder(borderColor: CGColor = UIColor.white.cgColor,
backgroundColor: CGColor = UIColor.clear.cgColor) {
self.borderStyle = .none
self.layer.backgroundColor = backgroundColor
let border = CALayer()
let width = CGFloat(2.0)
border.borderColor = borderColor
border.frame = CGRect(x: 0, y: self.frame.size.height - width, width: self.frame.size.width, height: self.frame.size.height)
border.borderWidth = width
self.layer.addSublayer(border)
self.layer.masksToBounds = true
}
}
这对我有用。
然后你可以打电话
yourTextField.SetBottomBorder(borderColor: UIColor.white.cgColor, backgroundColor: UIColor.clear.cgColor)
答案 4 :(得分:0)
只需在代码中添加以下内容: -
border.backgroundColor = UIColor.black.cgColor
答案 5 :(得分:0)
这段代码似乎对我来说工作正常,设置backgroundColor以清除修复此
textField.backgroundColor = .clear