如何将子视图添加到我的堆栈视图?我尝试,但我在我的视野中看不到它们



我创建了一个类:UIView,在那里我制作了一个标签、textField和stackView。我想把它们添加到我的stackView中,但我不知道问题出在哪里。

class View: UIView {
let stackView: UIStackView = {
let sv = UIStackView()
sv.axis = .vertical
sv.distribution = .fillEqually
sv.spacing = 10
sv.translatesAutoresizingMaskIntoConstraints = false
return sv
}()
let errorCodeLabel: UILabel = {
let lbl = UILabel()
lbl.text = "Error"
-------- (code)
lbl.translatesAutoresizingMaskIntoConstraints = false
return lbl
}()
let textField: UITextField = {
let tf = UITextField()
-------- (code)
tf.translatesAutoresizingMaskIntoConstraints = false
return tf
}()
init() {
super.init(frame: .zero)
setUpStackView()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setUpStackView() {
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.addArrangedSubview(errorCodeLabel)
stackView.addArrangedSubview(textField)
}

之后,我转到我的viewController,使其保持不变:

let tField = View()

并为其添加一些约束。

但当我运行模拟器时,我什么也看不到。救命!

您需要添加stackView作为视图的子视图。在初始化中执行addSubview(stackView)。此外,还需要将约束从stackView添加到父视图。

作为一个建议,我会让你的类成为UIStackView的一个子类,因为你无论如何都不会直接向视图中添加多个元素。

最新更新