我有一个UILabel,在Universal storyboard中创建,我已经提到了所有约束的位置除了宽度。因此它根据文本集调整自身大小。太棒了!正是我想要的。
问题从这里开始:它的背景颜色为绿色,但那种颜色紧紧包裹着我的文字。因此我相信让它更宽一点可以帮助我。但要做到这一点,我需要知道我的UILabel子类的哪个方法被调用。这样我就可以覆盖并添加10点的额外宽度。
BottomLine:在为文本分配文本后,会调用哪种UILabel方法自动调整标签大小?
目前的样子:
答案 0 :(得分:4)
很遗憾,我们不能在contentEdgeInsets
上设置任何UILabel
属性(就像我们在UIButton
上所做的那样)。如果您希望自动布局继续自己制作高度和宽度约束,您可以创建UILabel
的子类并覆盖intrinsicContentSize
和sizeThatFits
以实现您想要的效果。
所以,比如:
- (CGSize) intrinsicContentSize
{
return [self addHorizontalPadding:[super intrinsicContentSize]];
}
- (CGSize)sizeThatFits:(CGSize)size
{
return [self addHorizontalPadding:[super intrinsicContentSize]];
}
- (CGSize)addHorizontalPadding:(CGSize)size
{
return CGSizeMake(size.width + (2*kSomeHorizontalPaddingValue), size.height);
}
请注意,这只会触及水平填充,但显然可以修改以添加垂直填充。
答案 1 :(得分:1)
IBInspectable
)contentInsets
属性。
无论如何,只是想指出你也可以通过将标签包装在另一个视图中来完全在IB中完成此操作,为容器视图提供背景颜色并为水平填充添加约束。