UILabel
中包含UIView
,其大小固定。 UILabel
包含动态文字。如何确保UILabel
永远不会比包含的UIView更大?
在使用AutoLayout
之前,只需使用AdjustsFontSizeToFitWidth
即可轻松实现,但我无法再使用Autolayout了。
我应该从UILabel
添加到UIView
哪些约束?现在它只是领先对齐。
答案 0 :(得分:4)
此类视图有一些特殊方法,例如UILabel
(contentHugging
和contentCompressionResistance
),但它们已经启用。所以你需要禁用标签的宽度增长到superview的宽度。
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self.label attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationLessThanOrEqual toItem:self.label.superview attribute:NSLayoutAttributeWidth multiplier:1.0f constant:0.0f];
[self.label addConstraint:widthConstraint];
答案 1 :(得分:0)
答案 2 :(得分:0)
拖动并调整标签大小以适应整个屏幕宽度,可能会从两侧留下一些填充物。 设置4个约束: 1)标签的高度。 2)UIView的顶层空间。 3)领导UIView的空间。 4)UIView的尾随空间。
最后将Label的horizontalcompressionResistense优先级设为1000。
答案 3 :(得分:0)
Swift 3和4
var widthConstraint = NSLayoutConstraint(item: label, attribute: .width, relatedBy: .lessThanOrEqual, toItem: label.superview, attribute: .width, multiplier: 1.0, constant: 0.0)
label.addConstraint(widthConstraint)