在swift 4中使用textField和label进行自定义控制

问题描述 投票:0回答:1

我正在尝试创建一个包含@IDesignableUITextFieldUILabel自定义控件。我创建了UIViewUITextFieldDelegate的子类。在方法awakeFromNib()的这个类中,我创建textField并将其添加到ViewaddSubview()。在故事板上我的主要ViewController我添加了一个View控件并将其类设置为我的新类。但什么都没发生。我没有看到文字字段。这是我的代码:

@IBDesignable class CTextField: UIView, UITextFieldDelegate {
    var textField: UITextField?
    var label: UILabel?

    @IBInspectable var placeHolderText: String = "" {
        didSet {
           textField?.placeholder = placeHolderText
        }
     }

     override func awakeFromNib() {
          textField =  UITextField(frame: CGRect(x: 20, y: 100, width: 300, height: 40))
          textField?.placeholder = placeHolderText

          self.addSubview(textField!)
     }}

我应该在哪里创建textField?我的班级CTextField在哪个方法?我应该覆盖绘制方法吗?

ios swift custom-controls textfield
1个回答
0
投票

你应该做下一个:

  • 在视图控制器中创建@IBOutlet weak var customTextFieldView: CTextField!
  • customTextFieldView连接storyboard

enter image description here - 为您的视图设置正确的约束:

enter image description here

  • 在故事板中设置placeHolderText

最后像这样更新你的课程:

@IBInspectable var placeHolderText: String = "" {
        didSet {
            textField?.placeholder = placeHolderText
            updateView()
        }
    }
override func awakeFromNib() {
    super.awakeFromNib()
}

func updateView() {
    subviews.forEach { $0.removeFromSuperview() }

    textField =  UITextField(frame: CGRect(x: 0, y: 0, width: 300, height: 40))
    textField?.backgroundColor = .red
    textField?.placeholder = placeHolderText

    self.addSubview(textField!)
}
© www.soinside.com 2019 - 2024. All rights reserved.