嵌套的UIStackViews不对齐。我如何对齐它们?

时间:2016-08-03 13:40:56

标签: ios objective-c swift xcode uistackview

我想用stackviews创建一个电子表格样式表。但是,正如您在图像中看到的那样,由于之前的项目较宽,因此列未对齐。如何确保它们对齐?

enter image description here

这是我创建堆栈的方式:

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)

        }

    }


}

这是故事板的完成方式: enter image description here

1 个答案:

答案 0 :(得分:0)

您应该使用UICollectionView而不是UIStackView ...将UIStackView视为AutoLayout的包装,简化在预定义空间内布局视图集合 而不是可滚动容器,它能够处理几乎无限数量的视图的布局。

如果您要创建电子表格,您可能希望能够横向和纵向滚动,但您只能根据发布的示例代码垂直滚动(除非你可以使用UICollectionView来查看UIStackView。

我建议的是在每个单元格中创建一个包含水平滚动UICollectionView的UITableView。或者,根据您的需要,您还可以在垂直滚动的UICollectionView中嵌套UICollectionView。

在其他UICollectionViews / UITableViews中包含UICollectionViews / UITableViews实际上非常高效,并且经常在您描述的场景中使用。