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的预期结果(请更新你的答案以便我能接受)嗯。我误解了你的例子。我很高兴你解决了你的问题