当我设置文本时调用哪个 UILabel 方法,它会自行调整大小以适应?
Which UILabel method is invoked when I set text, and it resizes itself to fit?
我有一个在通用故事板中创建的 UILabel,我已经提到了其位置 OTHER THAN WIDTH 的所有必需的 constraints。所以它根据文本集调整自己的大小。极好的!正是我想要的。
问题从这里开始: 它的背景颜色为绿色,但这种颜色紧紧包裹着我的文字。因此,我相信将它扩大一点可以帮助我。但为此,我需要知道调用了我的 UILabel 子类的哪个方法。这样我就可以覆盖并添加 10 点的额外宽度。
BottomLine:在我为标签分配文本后,调用哪个 UILabel 方法自动调整标签大小?
目前的样子:
不幸的是,我们没有任何可以在 UILabel
上设置的 contentEdgeInsets
属性(正如我们在 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);
}
请注意,这仅涉及水平填充,但显然也可以修改以添加垂直填充。
如果您想以编程方式执行此操作,Steffen 的回答是可行的方法。我的项目中通常有一个通用的自定义标签子类,其中添加了 (IBInspectable
) contentInsets
属性,等等。
无论如何,只是想指出,您也可以在 IB 中完全做到这一点,只需将您的标签包装在另一个视图中,为容器视图提供背景颜色并为您的水平填充添加约束。
我有一个在通用故事板中创建的 UILabel,我已经提到了其位置 OTHER THAN WIDTH 的所有必需的 constraints。所以它根据文本集调整自己的大小。极好的!正是我想要的。
问题从这里开始: 它的背景颜色为绿色,但这种颜色紧紧包裹着我的文字。因此,我相信将它扩大一点可以帮助我。但为此,我需要知道调用了我的 UILabel 子类的哪个方法。这样我就可以覆盖并添加 10 点的额外宽度。
BottomLine:在我为标签分配文本后,调用哪个 UILabel 方法自动调整标签大小?
目前的样子:
不幸的是,我们没有任何可以在 UILabel
上设置的 contentEdgeInsets
属性(正如我们在 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);
}
请注意,这仅涉及水平填充,但显然也可以修改以添加垂直填充。
如果您想以编程方式执行此操作,Steffen 的回答是可行的方法。我的项目中通常有一个通用的自定义标签子类,其中添加了 (IBInspectable
) contentInsets
属性,等等。
无论如何,只是想指出,您也可以在 IB 中完全做到这一点,只需将您的标签包装在另一个视图中,为容器视图提供背景颜色并为您的水平填充添加约束。