当我将UIStackView分布设置为equalspacing时,为什么子视图不可见?

时间:2017-05-23 06:15:01

标签: ios swift autolayout uistackview

我想在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。

我想它与拥抱或压缩阻力优先级有​​关,但在子视图中设置这些不起作用。

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

对于除getAttribute("hidden") != null 之外的所有发行版,堆栈视图在计算沿堆栈轴的大小时使用每个排列的视图的fillEqually属性。

因此覆盖此属性将起作用。

intrinsicContentSize