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

How to add SubView to a horizontal StackView programmatically to create Stripes?

我有一个带有 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 位置。但是现在,当我尝试设置高度锚点时它崩溃了,而当我移除高度锚点时它根本不显示任何内容。我如何布置它们,使它们全高,并且彼此相邻且没有边距?

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