ios - 具有动态标签宽度的堆栈 View 分布

标签 ios swift nslayoutconstraint stackview

我有一个 UIStackView然而,subViews的第一个 View 是 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
}()

当然,我还要加上我的 subViewsinit如下;
    stackView.addArrangedSubview(currentBidLabel)
    stackView.addArrangedSubview(seperator)
    stackView.addArrangedSubview(adCreatedAtLabel)
    stackView.addArrangedSubview(moreButton)

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

illustration

我正在寻找的结果如下;
  • 红色 = 动态标签宽度(与蓝色相同)
  • 绿色 = 固定宽度
  • 蓝色 = 填充剩余空间
  • 青色 = 固定宽度
  • 最佳答案

    您应该设置所需的 ContentHuggingPriority对于每个标签。以下设置将符合您的需求

    redLabel.setContentHuggingPriority(. required, for: .horizontal)
    greenLabel.setContentHuggingPriority(.required, for: .horizontal)
    blueLabel.setContentHuggingPriority(.defaultLow, for: .horizontal)
    cyanLabel.setContentHuggingPriority(.required, for: .horizontal)
    
  • defaultLow意思是把剩下的填满。
  • required意味着首先适合。

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

    关于ios - 具有动态标签宽度的堆栈 View 分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59421197/

    相关文章:

    ios - UIApplication 没有成员共享

    ios - 如何使注释看起来像当前位置指示符?

    ios - NSLayoutConstraints 在第一个 tableview 呈现后更新

    IOS 地理围栏后台警报

    ios - 无法在处理 localNotification 操作时从 AppDelegate 发布通知

    ios - 使用网站识别 Google 信标

    ios - 独立填充 Collection View 的每个部分 Swift

    swift - 缩小时如何使 UIImageView 居中于 Scrollview?

    ios - 仅使用 LayoutConstraints 来更改方向?

    ios - 操作无法完成。 (NSURLErrorDomain 错误-1012。)