如何以编程方式将 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 的目的。
我有一个带有 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 的目的。