我认为您需要再执行几个步骤,按钮才会开始显示。
将堆栈视图添加到当前视图的子视图中
view.addSubview(buttonStackView)
现在每个视图按钮以及stackView都需要将translatesAutoresizingMaskIntoConstraints
设置为false。
button1.translatesAutoresizingMaskIntoConstraints = false
button2.translatesAutoresizingMaskIntoConstraints = false
buttonStackView.translatesAutoresizingMaskIntoConstraints = false
现在设置stackView约束
NSLayoutConstraint.activate([
buttonStackView.topAnchor.constraint(equalTo: view.topAnchor),
buttonStackView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
buttonStackView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
buttonStackView.trailingAnchor.constraint(equalTo: view.trailingAnchor)])
您将需要提供约束,或者可以覆盖stackView的固有大小。
override func intrinsicContentSize() -> CGSize
{
return CGSizeMake(200, 40)
}
由于UILabel
具有固有大小,因此将显示按钮,如果没有,则必须设置约束以确保安全。
@@ Nowonder我只是重新创建您想要实现的目标。以下是步骤。
UIStackView
在viewController中添加Interface Builder
并添加所需的约束。添加以下代码。
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton()
button.setTitle("btn 1", for: .normal)
button.backgroundColor = UIColor.red
button.translatesAutoresizingMaskIntoConstraints = false
let button2 = UIButton()
button2.setTitle("btn 2", for: .normal)
button2.backgroundColor = UIColor.gray
button2.translatesAutoresizingMaskIntoConstraints = false
let button3 = UIButton()
button3.setTitle("btn 3", for: .normal)
button3.backgroundColor = UIColor.brown
button3.translatesAutoresizingMaskIntoConstraints = false
buttonStackView.alignment = .fill
buttonStackView.distribution = .fillEqually
buttonStackView.spacing = 8.0
buttonStackView.addArrangedSubview(button)
buttonStackView.addArrangedSubview(button2)
buttonStackView.addArrangedSubview(button3)
}
希望有帮助。
解决!
[当我使用实例方法init(type :)设置按钮的类型时,该按钮出现了