UIStackView 不显示
UIStackView not displaying
在我的 viewController viewDidLoad
方法中我有:
let stackView = UIStackView()
stackView.axis = .Vertical
self.view.addSubview(stackView)
for _ in 1..<100{
let vw = UIButton(type: .System)
vw.setTitle("Button", forState: .Normal)
stackView.addArrangedSubview(vw)
}
但是当我编译时我只得到一个全白的屏幕。
我做错了什么?
您正在将堆栈视图添加到父视图,但并未告诉父视图如何布置堆栈视图。如果您使用基于约束的布局,则需要将堆栈视图固定到父视图的某些边缘:
view.addConstraint(NSLayoutConstraint(item: stackView, Attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1.0, constant: 0.0)
view.addConstraint(NSLayoutConstraint(item: stackView, Attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1.0, constant: 0.0)
view.addConstraint(NSLayoutConstraint(item: stackView, Attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 1.0, constant: 0.0)
这会将堆栈视图固定到视图的顶部、前缘和后缘。
另一种方法是使用 Interface Builder 来设置约束,因为它们在代码中管理起来非常冗长。
您已为堆栈视图添加约束或设置框架。请检查以下修改后的代码:
let stackView = UIStackView()
stackView.axis = .Vertical
stackView.distribution = .FillEqually
for i in 1..<100{
let vw = UIButton(type: .System)
vw.setTitle("Button\(i)", forState: .Normal)
stackView.addArrangedSubview(vw)
}
self.view.addSubview(stackView)
stackView.frame = self.view.bounds
在我的 viewController viewDidLoad
方法中我有:
let stackView = UIStackView()
stackView.axis = .Vertical
self.view.addSubview(stackView)
for _ in 1..<100{
let vw = UIButton(type: .System)
vw.setTitle("Button", forState: .Normal)
stackView.addArrangedSubview(vw)
}
但是当我编译时我只得到一个全白的屏幕。 我做错了什么?
您正在将堆栈视图添加到父视图,但并未告诉父视图如何布置堆栈视图。如果您使用基于约束的布局,则需要将堆栈视图固定到父视图的某些边缘:
view.addConstraint(NSLayoutConstraint(item: stackView, Attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1.0, constant: 0.0)
view.addConstraint(NSLayoutConstraint(item: stackView, Attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1.0, constant: 0.0)
view.addConstraint(NSLayoutConstraint(item: stackView, Attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 1.0, constant: 0.0)
这会将堆栈视图固定到视图的顶部、前缘和后缘。
另一种方法是使用 Interface Builder 来设置约束,因为它们在代码中管理起来非常冗长。
您已为堆栈视图添加约束或设置框架。请检查以下修改后的代码:
let stackView = UIStackView()
stackView.axis = .Vertical
stackView.distribution = .FillEqually
for i in 1..<100{
let vw = UIButton(type: .System)
vw.setTitle("Button\(i)", forState: .Normal)
stackView.addArrangedSubview(vw)
}
self.view.addSubview(stackView)
stackView.frame = self.view.bounds