【发布时间】:2019-09-03 21:17:44
【问题描述】:
我正在尝试使用嵌套在 UIScrollView 中的 UIStackViews 以编程方式创建一个 3x33 的 UIButtons 网格。外部UIStackView 有一个垂直轴,而内部UIStackViews 有水平轴和distribution = .fillEqually。
如果我没有封闭的UIScrollView,按钮会正确填充屏幕的宽度。 然而,在滚动视图中,按钮仅占屏幕宽度的一半。
这是一个代码示例。在 IB 中,ViewController 的 view 属性已设置为 UIScrollView 实例。
class ViewController: UIViewController {
var stackView: UIStackView!
override func viewDidLoad() {
super.viewDidLoad()
title = "No Filling :("
stackView = UIStackView()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .vertical
stackView.spacing = 5
view.addSubview(stackView)
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-[stackView]-|", options: .alignAllCenterX, metrics: nil, views: ["stackView": stackView!]))
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[stackView]|", options: .alignAllCenterY, metrics: nil, views: ["stackView": stackView!]))
for _ in 1...33 {
let hView = UIStackView()
hView.translatesAutoresizingMaskIntoConstraints = false
hView.axis = .horizontal
hView.distribution = .fillEqually
hView.spacing = 5
stackView.addArrangedSubview(hView)
stackView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[hView]|", options: .alignAllCenterX, metrics: nil, views: ["hView": hView]))
for i in 1...3 {
let button = UIButton(type: .system)
button.setTitle("Button \(i)", for: .normal)
hView.addArrangedSubview(button)
button.layer.borderWidth = 1
button.layer.cornerRadius = 7
}
}
}
}
【问题讨论】:
标签: ios swift uiscrollview uikit uistackview