如何为视图出现时未聚焦的 UITextField 设置默认边框颜色?尝试过没有成功:
class UITextFieldCustom : UITextField, UITextFieldDelegate {
init(frame: CGRect, size: CGFloat) {
super.init(frame: frame)
self.layer.borderColor = UIColor.gray.cgColor
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
答案 0 :(得分:1)
如果看不到新边框,请尝试增加其宽度:
layer.borderWidth = 2.0
答案 1 :(得分:1)
您面临的问题是未调用 self.layer.borderColor = UIColor.gray.cgColor
,因为未调用函数 init(frame: CGRect, size: CGFloat)
。不调用的原因是你的文本框没有在你的代码中初始化,例如:
func createTextField() -> UITextfield {
return UITextfield(frame: .zero, size: 100.0)
}
您的文本字段是从故事板初始化的。这就是另一个 init 函数 required init?(coder aDecoder: NSCoder)
存在的原因。 sotryboard 调用此函数来初始化文本字段。
要解决这个问题,你只需要将你的边框修改行添加到另一个 init 函数中,就像这样:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.layer.borderColor = UIColor.gray.cgColor
}
虽然我更喜欢另一种干净的方法,是将所有设置代码添加到 viewDidLoad 方法中,以获得清晰的概述,如下所示:
class ViewController: UIViewController {
// MARK: - Properties
@IBOutlet weak var textfield: UITextfield!
// MARK: - View's Lifecycle
override func viewDidLoad {
super.viewDidLoad()
setupTextfield()
}
// MARK: - Setup
private func setupTextfield() {
textfield.layer.borderColor = UIColor.gray.cgColor
}
}
答案 2 :(得分:0)
把你的代码也放在这里,你可能不会从故事板或笔尖调用它。
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.layer.borderColor = UIColor.gray.cgColor
}
答案 3 :(得分:0)
使用@IBDesignable 类来创建边框颜色并设置宽度,就像这个例子一样。
import UIKit
@IBDesignable
class BorderTextField: UITextField {
@IBInspectable var borderColor: UIColor = UIColor.white{
didSet{
layer.borderColor = borderColor.cgColor
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet{
layer.borderWidth = borderWidth
}
}
}
您可以根据需要在 storyboard 中设置值。