Swift 创建自定义UITextfield

Swift 创建自定义UITextfield,swift,uitextfield,Swift,Uitextfield,如何创建自定义UITextfield?我创建了一个类,其中uitextfield是一个子类,然后我添加了一个标签,它会显示出来,但是这里没有显示边框(UIView),这是代码 import UIKit class borderedTextField: UITextField{ let viewz:UIView! = UIView() var border:UIView! = UIView() var name:UILabel! = UILabel() over

如何创建自定义UITextfield?我创建了一个类,其中uitextfield是一个子类,然后我添加了一个标签,它会显示出来,但是这里没有显示边框(UIView),这是代码

import UIKit

class borderedTextField: UITextField{
    let viewz:UIView! = UIView()
    var border:UIView! = UIView()
    var name:UILabel! = UILabel()

    override func draw(_ rect: CGRect) {
        self.addSubview(viewz)
    }

    override func layoutSubviews() {
        backgroundColor = UIColor.green
    }

    func placement(){
        border.frame.size.height = 15
    border.backgroundColor = UIColor.black
    border.translatesAutoresizingMaskIntoConstraints = false
    viewz.addSubview(border)
    border.heightAnchor.constraint(equalToConstant: 15).isActive = true
    border.widthAnchor.constraint(equalToConstant: 100)
    border.leftAnchor.constraint(equalTo: viewz.leftAnchor, constant: 10).isActive = true
    border.bottomAnchor.constraint(equalTo: viewz.bottomAnchor, constant: -5).isActive = true

    name.text = "whatt"
    name.textAlignment = .left
    name.textColor = UIColor.black
    name.translatesAutoresizingMaskIntoConstraints = false
    viewz.addSubview(name)
    name.widthAnchor.constraint(equalToConstant: 100)
    name.heightAnchor.constraint(equalToConstant: 50)
    name.leftAnchor.constraint(equalTo: viewz.leftAnchor, constant: 5).isActive = true
    name.topAnchor.constraint(equalTo: viewz.topAnchor, constant: 10).isActive = true

    }

}
我以编程的方式调用它(没有故事板),请让我知道如何在不使用故事板的情况下解决这个问题,我需要它是完整的代码

import UIKit

class signViewController: UIViewController,UITextFieldDelegate {
var animText:borderedTextField!

 override func viewDidLoad() {
        super.viewDidLoad()
       let animText = borderedTextField()
        animText.delegate = self
        animText.placeholder = "click here"
        animText.placement()
        animText.frame = CGRect(x: 100, y: 500, width: 200, height: 90)
        view.addSubview(animText)
 }
}

您必须添加
init

override init (frame : CGRect) {
    super.init(frame : frame)
    self.placement()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    self.placement()
}
此外,边框的宽度未处于活动状态

border.widthAnchor.constraint(equalToConstant: 100).active = true
名副其实

name.widthAnchor.constraint(equalToConstant: 100).active = true
name.heightAnchor.constraint(equalToConstant: 50).active = true
编辑


变量边框:UIView!=UIView()它显示在文本字段的左上角,而不是底部。因为您将其约束为viewz。bottomAnchor更改为self.bottomAnchor,viewz也没有约束。我收到此错误“因为他们没有共同的祖先。约束或其锚定是否引用不同视图层次中的项?必须将self.addSubview(viewz)行放在placement函数中才能对其进行约束
border.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 10).isActive = true
border.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -5).isActive = true