如何以编程方式将SubView添加到水平StackView以创建Stripes?

时间:2018-06-15 01:32:18

标签: ios swift uistackview

我有一个带有StackView的collectionView Cell。

class OuterCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var stackView: UIStackView!
    override init(frame: CGRect) {
        super.init(frame: frame)
    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        for i in 1...30 {
            let tick = UIView()
            if i % 2 == 0 {
                tick.backgroundColor = UIColor.red
            } else {
                    tick.backgroundColor = UIColor.clear
            }
            tick.tag = i
            tick.heightAnchor.constraint(equalTo: self.heightAnchor, constant: 0.0).isActive = true
            self.stackView?.insertArrangedSubview(tick, at:i)
        }
    }

我想在stackView上绘制30个单元格,在红色和透明之间交替。现在我正在设置子视图的索引以及具有自动布局锚点约束的高度,并希望.fillEqually分布将计算每个子视图的宽度和X位置。但是现在,当我尝试设置高度锚时它崩溃了,当我移除高度锚时它根本没有显示任何东西。我如何将它们铺设成全高,并且彼此相邻而没有边距?

1 个答案:

答案 0 :(得分:1)

我认为您不应该在此处向stackview中的项目添加高度锚点。自动地,堆栈视图中包含的内容是相等的高度(或宽度取决于堆栈视图方向)​​。您不需要直接在stackview中设置大小。它首先打败了stackview的目的。