为什么UIStackView调整排列的子视图的大小?

时间:2018-11-29 06:06:07

标签: swift autolayout uikit uistackview snapkit

为什么UIStackView调整子视图的大小?我认为将distribution设置为.fill时它的工作。但是.equalSpacing并不暗示这种行为。我是对的吗?

let stackView = UIStackView()
    stackView.alignment = .firstBaseline
    stackView.axis = .vertical
    stackView.distribution = .equalSpacing
    stackView.spacing = 0.0
    stackView.translatesAutoresizingMaskIntoConstraints = true
    self.view.addSubview(stackView)

    stackView.snp.makeConstraints { (make) -> Void in
      make.top.equalTo(button.snp.bottom)
      make.left.equalTo(view).offset(16.0)
      make.bottom.equalTo(view)
      make.right.equalTo(view).offset(-16.0)
    }

    let exampleView = UIView(frame: .zero)
    stackView.addArrangedSubview(exampleView)
    exampleView.backgroundColor = .yellow

    exampleView.snp.makeConstraints { (make) in
      make.width.equalToSuperview()
      make.height.equalTo(60.0)
    }

2 个答案:

答案 0 :(得分:0)

UIStackView 安排 其子视图。

这意味着:

  • 如果您限制其高度(“高度”约束或“顶部和底部”约束),它将调整子视图的大小/布局以适合其高度。
  • 如果 限制其高度,则它将使用其子视图的高度进行布局。

enter image description here

答案 1 :(得分:0)

请检查有关 UIStackViewDistributionEqualSpacing

的Apple文档

一种布局,在该布局中,堆栈视图会放置其排列的视图,以便它们沿堆栈视图的轴填充可用空间。当排列的视图未填充堆栈视图时,它将均匀填充视图之间的间距。如果排列的视图不适合堆叠视图,则它会根据其抗压缩优先级来缩小视图。如果有任何歧义,则堆栈视图会根据它们在ArgumentedSubviews数组中的索引缩小视图。

https://developer.apple.com/documentation/uikit/uistackviewdistribution/uistackviewdistributionequalspacing?language=objc