iOS:自动布局动态数量的项目

iOS:自动布局动态数量的项目,ios,uitableview,uicollectionview,autolayout,Ios,Uitableview,Uicollectionview,Autolayout,我正在尝试重新创建如下所示的视图。对我来说,困难在于其中一些元素将有不同数量的实例 第一项是带有variabel多行的UILabel。此项目将始终只有一个。 UIImageView。这可以是零项或一项。 UIButton 0或以上,至少3-4个。 如何做到这一点? 实现这一目标的最佳实践是什么?我有一个想法,就是使用UITableView,将每个元素放在一个表视图单元格中。但这似乎是一个有点老套的解决方案。特别是因为我必须删除表格边框和填充的默认样式 另一个解决方案是可能只使用一列的UIColl

我正在尝试重新创建如下所示的视图。对我来说,困难在于其中一些元素将有不同数量的实例

第一项是带有variabel多行的UILabel。此项目将始终只有一个。 UIImageView。这可以是零项或一项。 UIButton 0或以上,至少3-4个。 如何做到这一点? 实现这一目标的最佳实践是什么?我有一个想法,就是使用UITableView,将每个元素放在一个表视图单元格中。但这似乎是一个有点老套的解决方案。特别是因为我必须删除表格边框和填充的默认样式

另一个解决方案是可能只使用一列的UICollectionView

第三种解决方案是在我已有的autolayout解决方案的基础上构建,并使用大量的if语句和for循环来实现它。这似乎是一个糟糕的解决方案


那么,我如何使用最佳实践来实现这一点呢?例如,将UITableView用于纯布局目的通常是一个坏主意吗?

创建一个UIStackView,并在其中为具有零个或多个实例的每个项目创建另一个UIStackView

添加当您想附加一个按钮到按钮stackView时使用

btnsStackView.addArrangedSubview(btn)
UILabels和UIImageView也一样

检查这个,可能会有帮助

   for i in 0...5
    {
        let headerView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height))
       if(i % 2 == 0)
       {
         headerView.backgroundColor = UIColor.blue
        }
        else
       {
          headerView.backgroundColor = UIColor.yellow
        }

        self.stttq.addArrangedSubview(headerView)

    }


    let headerView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height))

    headerView.backgroundColor = UIColor.black

    self.stttq.insertArrangedSubview(headerView , at:0)

谢谢,忘记堆栈视图了。我现在将调查此事创建嵌套StackView(而不仅仅是func insertArrangedSubviewUIView,at:Int)以在正确的位置插入元素有什么特别的原因吗?没有,但我更喜欢这样,因为分布总是平等的