具有动态标签宽度的堆栈视图分布

我有一个UIStackView,但是subViews的第一个视图是UILabel,并且没有相应地调整其大小。

我的代码如下;

private let stackView: UIStackView = {
    let view = UIStackView()
    view.translatesAutoresizingMaskintoConstraints = false
    view.axis = .horizontal
    view.distribution = .fillProportionally
    view.alignment = .trailing
    view.spacing = 8
    return view
}()

我当然要在subViews内添加我的init,如下所示;

    stackView.addArrangedSubview(currentBidLabel)
    stackView.addArrangedSubview(seperator)
    stackView.addArrangedSubview(adCreatedAtLabel)
    stackView.addArrangedSubview(moreButton)

我当前的结果如下图所示;

具有动态标签宽度的堆栈视图分布

我正在寻找的结果如下;

  1. 红色=动态标签宽度(与蓝色相同)
  2. 绿色=固定宽度
  3. 蓝色=填充剩余空间
  4. 青色=固定宽度
xajs18 回答:具有动态标签宽度的堆栈视图分布

您应该为每个标签设置所需的ContentHuggingPriority。以下设置将满足您的需求

redLabel.setContentHuggingPriority(. required,for: .horizontal)
greenLabel.setContentHuggingPriority(.required,for: .horizontal)
blueLabel.setContentHuggingPriority(.defaultLow,for: .horizontal)
cyanLabel.setContentHuggingPriority(.required,for: .horizontal)
  • defaultLow意味着填补其余部分。
  • required意味着先适合。

其他值应介于这两者之间。

本文链接:https://www.f2er.com/2887354.html

大家都在问