Я создал пользовательский UIView
, и внутри представления я пытаюсь добавить несколько элементов пользовательского интерфейса, используя UIStackView
.Использование программ просмотра стека
Внутри IB я добавил представление, а затем установил пользовательский класс в качестве своего пользовательского UIView.
UIStackView
не привязан к UIView
. Я добавил его, вместо этого UIStackView
появляется привязанным к началу координат. Кроме того, я могу видеть это только в иерархии представления отладки. На самом деле он не показывает ни одну из табличек или кнопок, я просто вижу пунктирный серый ящик.
Вот настраиваемое представление я создал
import UIKit
class ParameterControl: UIView {
private var name : UILabel!
private var valTf : UITextField!
private var delta : UITextField!
private var stepper : UIStepper!
private var button : UIButton!
init(frame: CGRect, albumCover: String) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
func commonInit(){
name = UILabel()
name.text = "Name"
name.backgroundColor = UIColor.blue
valTf = UITextField.init()
delta = UITextField.init()
stepper = UIStepper.init()
button = UIButton.init()
let stackView = UIStackView(arrangedSubviews: [valTf, delta, stepper, button])
stackView.axis = .horizontal
stackView.distribution = .fillEqually
stackView.alignment = .fill
stackView.spacing = 10
stackView.translatesAutoresizingMaskIntoConstraints = false
addSubview(stackView)
//let viewsDictionary = ["stackView":stackView]
//let stackView_H = NSLayoutConstraint.constraints(withVisualFormat: "H:|-20-[stackView]-20-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: viewsDictionary)
//let stackView_V = NSLayoutConstraint.constraints(withVisualFormat: "V:|-30-[stackView]-30-|", options: NSLayoutFormatOptions(rawValue:0), metrics: nil, views: viewsDictionary)
//self.addConstraints(stackView_H)
//self.addConstraints(stackView_V)
}
}
я использую UIStackView
неправильно? Цель состоит в том, чтобы иметь возможность создавать массив этих представлений, по одному для каждого из моих параметров. Я не хочу создавать эти представления индивидуально в IB.
Вам нужно добавить ограничения в представление стека, чтобы ограничить его своим супервизором (self в вашем пользовательском классе) – Paulw11