我想在UIStackView
水平放置一组自定义视图。
每个子视图都有宽度和高度equal to constant
约束:
let stack = UIStackView(frame: frameRect)
stack.axis = UILayoutConstraintAxis.horizontal
stack.distribution = UIStackViewDistribution.equalSpacing
stack.layoutMargins = UIEdgeInsets(top: 0, left: 40, bottom: 0, right: 40)
stack.isLayoutMarginsRelativeArrangement = true
for i in 1...3 {
let numberView = RotatingNumberView()
numberView.heightAnchor.constraint(equalToConstant: CGFloat(cellSize))
numberView.widthAnchor.constraint(equalToConstant: CGFloat(cellSize))
numberViews.append(numberView)
stack.addArrangedSubview(numberView)
}
如果我更改为fillEqually
分布,则显示子视图,但是它们的宽度会被拉伸以填充stackView。
我想它与拥抱或压缩阻力优先级有关,但在子视图中设置这些不起作用。
这里发生了什么?
答案 0 :(得分:1)
对于除getAttribute("hidden") != null
之外的所有发行版,堆栈视图在计算沿堆栈轴的大小时使用每个排列的视图的fillEqually
属性。
因此覆盖此属性将起作用。
intrinsicContentSize