Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 具有动态标签宽度的堆栈视图分布_Ios_Swift_Nslayoutconstraint_Stackview - Fatal编程技术网

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

Ios 具有动态标签宽度的堆栈视图分布,ios,swift,nslayoutconstraint,stackview,Ios,Swift,Nslayoutconstraint,Stackview,我有一个UIStackView,但是子视图的第一个视图是UILabel,它没有相应地调整大小 我的代码如下所示 private let stackView: UIStackView = { let view = UIStackView() view.translatesAutoresizingMaskIntoConstraints = false view.axis = .horizontal view.distribution = .fillProportion

我有一个
UIStackView
,但是
子视图的第一个视图是
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
}()
当然,我在
init
中添加我的
子视图,如下所示

    stackView.addArrangedSubview(currentBidLabel)
    stackView.addArrangedSubview(seperator)
    stackView.addArrangedSubview(adCreatedAtLabel)
    stackView.addArrangedSubview(moreButton)
我目前的结果如下图所示

我想要的结果如下:

  • 红色=动态标签宽度(与蓝色相同)
  • 绿色=固定宽度
  • 蓝色=填充剩余空间
  • 青色=固定宽度

  • 您应该为每个标签设置所需的
    ContentHuggingPriority
    。以下设置将与您的需要相匹配

    redLabel.setContentHuggingPriority(. required, for: .horizontal)
    greenLabel.setContentHuggingPriority(.required, for: .horizontal)
    blueLabel.setContentHuggingPriority(.defaultLow, for: .horizontal)
    cyanLabel.setContentHuggingPriority(.required, for: .horizontal)
    
    • defaultLow
      表示填充其余部分
    • required
      表示先安装

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

    水平堆栈视图不适合
    。尾部对齐。相反,您应该使用
    .fill
    /
    .top
    /
    .center
    /
    .bottom
    。您是否需要AED 400和1d才能使两个标签占据相同的宽度?当我按比例填充时,我会将视图分成0宽度…提供的图像是我现有结果的一个示例。我需要红色标签与文本一样宽,蓝色填充剩余的空间。你能发布一张你想要的图片吗?我有红色=.required |绿色=.required |蓝色=.defaultLow |青色=.required的预期结果(请更新你的答案以便我能接受)嗯。我误解了你的例子。我很高兴你解决了你的问题