我想用stackviews创建一个电子表格样式表。但是,正如您在图像中看到的那样,由于之前的项目较宽,因此列未对齐。如何确保它们对齐?
这是我创建堆栈的方式:
class MyTableFullScreenViewController: UIViewController {
var json: JSON?
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var verticalStack: UIStackView!
override func viewDidLoad() {
super.viewDidLoad()
for i in 0..<json!["Rows"].arrayValue.count{
let horizontalStack = UIStackView()
horizontalStack.axis = .Horizontal
horizontalStack.spacing = 16
horizontalStack.distribution = .Fill
for j in 0..<json!["Rows"][i]["Column"].arrayValue.count{
let innerJson = json!["Rows"][i]["Column"][j]
switch innerJson["InputType"].intValue{
case 1:
Inputs.Input1(innerJson, parent: horizontalStack, isRepeatable: true)
case 11:
Inputs.Input11(innerJson, parent: horizontalStack, isRepeatable: true)
case 15:
Inputs.Input15(innerJson, parent: horizontalStack, isRepeatable: true)
default:
break
}
}
verticalStack.addArrangedSubview(horizontalStack)
}
}
}
答案 0 :(得分:0)
您应该使用UICollectionView
而不是UIStackView
...将UIStackView视为AutoLayout的包装,简化在预定义空间内布局视图集合 而不是可滚动容器,它能够处理几乎无限数量的视图的布局。
如果您要创建电子表格,您可能希望能够横向和纵向滚动,但您只能根据发布的示例代码垂直滚动(除非你可以使用UICollectionView来查看UIStackView。
我建议的是在每个单元格中创建一个包含水平滚动UICollectionView的UITableView
。或者,根据您的需要,您还可以在垂直滚动的UICollectionView中嵌套UICollectionView。
在其他UICollectionViews / UITableViews中包含UICollectionViews / UITableViews实际上非常高效,并且经常在您描述的场景中使用。