我有2个标签:描述标签(带红色背景)和结果标签(灰色文字)
如何为此示例设置约束,以使结果标签具有其内容的大小和描述标签,直到结果leadingAnchor? (就像我在第二排)
目标C
[self.customTextLabel.trailingAnchor constraintLessThanOrEqualToAnchor:self.counterLabel.leadingAnchor].active = YES;
[self.counterLabel.widthAnchor constraintGreaterThanOrEqualToConstant:0].active = YES;
迅速
titleLabel.trailingAnchor.constraint(lessThanOrEqualTo: counterLabel.leadingAnchor).isActive = true
counterLabel.widthAnchor.constraint(greaterThanOrEqualToConstant: 0).isActive = true
我有一个解决方案,我觉得它很难看。
self.counterLabelWidthConstraint = [self.counterLabel.widthAnchor constraintEqualToConstant:0];
self.counterLabelWidthConstraint.active = YES;
然后在我设置文本后:
self.counterLabelWidthConstraint.constant = [self.counterLabel sizeThatFits:CGSizeMake(CGFLOAT_MAX, self.counterLabel.height)].width;
答案 0 :(得分:3)
使用自动布局执行此操作的方法是使用2个标签中的contentCompressionResistancePriority
。将第一个标签的pririty设置为NSLayoutPriorityRequired
,为第一个标签设置较低的NSLayoutPriorityDefaultLow
。然后,只要2个标签有适当的约束将它们锚定到它们的超视图和彼此,第一个标签应该压缩而第二个标签不应该压缩。
答案 1 :(得分:2)
您只需要将右侧/灰色标签的水平抗压强度增加到高于左侧/红色标签的水平抗压性。这告诉视觉布局,如果两个标签没有足够的空间,左边的那个将在缩小右边的标签之前被压缩。 750是所有视图的默认值,因此只需将右侧/灰色标签的水平压缩阻力增加到751,您就应该好了。
答案 2 :(得分:0)
快速5 :
<#label#>.setContentCompressionResistancePriority(.required, for: .horizontal)
具有此属性的标签不会水平压缩。
答案 3 :(得分:-1)
您可以在故事板中设置约束。选择标签1(红色背景)和标签的超视图集宽度是相等的约束。选择标签1并双击其宽度约束,从结果窗口中,您可以看到Lable 1宽度等于superview,值常量为“1”。将“1”更改为0.7或您想要的百分比。