我如何强制 UILabel 比应有的宽 5 点?
How can I enforce an UILabel to be wider than it should be, by 5 points?
我有一个 UILabel,它的背景颜色为绿色。但它非常紧密地包裹着文字。我需要绿色背景比文本宽一点,大约 5 磅。我怎样才能做到这一点?
详情
标签是在故事板中创建的,具有水平间距限制。你可以像我猜的那样忽略约束,因为我已经处理了任何宽度。
建议的要求
我想我需要一个可以在 UILabel 的子类中重写的方法,以将其宽度增加 5 点。有人知道我应该覆盖哪种方法吗?
你可以先调用sizeToFit来实现,它会缩小框架并适合文本,然后你可以增加10个像素的宽度,记住保持居中对齐。
希望对您有所帮助..让我知道...:)
您可以尝试子class UILabel class 并重写下面的方法 -
- (void)drawTextInRect:(CGRect)rect {
UIEdgeInsets insets = {0, 5, 0, 5};
[super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
希望对您有所帮助!
我认为下面的代码对你有用
CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:22 ]].width;
label.frame = CGRectMake(point.x, point.y, width+5,height);
终于解决了我的问题!像这样效果很好 -
创建 UILabel
的子类并覆盖 intrinsicContentSize
和 sizeThatFits
以实现您想要的。
所以,类似于:
- (CGSize) intrinsicContentSize
{
return [self addHorizontalPadding:[super intrinsicContentSize]];
}
- (CGSize)sizeThatFits:(CGSize)size
{
return [self addHorizontalPadding:[super intrinsicContentSize]];
}
- (CGSize)addHorizontalPadding:(CGSize)size
{
if (size.width > 0)
return CGSizeMake(size.width + (2*kSomeHorizontalPaddingValue), size.height);
else
return size;
}
请注意,这仅涉及水平填充,但显然也可以修改以添加垂直填充。
我有一个 UILabel,它的背景颜色为绿色。但它非常紧密地包裹着文字。我需要绿色背景比文本宽一点,大约 5 磅。我怎样才能做到这一点?
详情
标签是在故事板中创建的,具有水平间距限制。你可以像我猜的那样忽略约束,因为我已经处理了任何宽度。
建议的要求
我想我需要一个可以在 UILabel 的子类中重写的方法,以将其宽度增加 5 点。有人知道我应该覆盖哪种方法吗?
你可以先调用sizeToFit来实现,它会缩小框架并适合文本,然后你可以增加10个像素的宽度,记住保持居中对齐。
希望对您有所帮助..让我知道...:)
您可以尝试子class UILabel class 并重写下面的方法 -
- (void)drawTextInRect:(CGRect)rect {
UIEdgeInsets insets = {0, 5, 0, 5};
[super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
希望对您有所帮助!
我认为下面的代码对你有用
CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:22 ]].width;
label.frame = CGRectMake(point.x, point.y, width+5,height);
终于解决了我的问题!像这样效果很好 -
创建 UILabel
的子类并覆盖 intrinsicContentSize
和 sizeThatFits
以实现您想要的。
所以,类似于:
- (CGSize) intrinsicContentSize
{
return [self addHorizontalPadding:[super intrinsicContentSize]];
}
- (CGSize)sizeThatFits:(CGSize)size
{
return [self addHorizontalPadding:[super intrinsicContentSize]];
}
- (CGSize)addHorizontalPadding:(CGSize)size
{
if (size.width > 0)
return CGSizeMake(size.width + (2*kSomeHorizontalPaddingValue), size.height);
else
return size;
}
请注意,这仅涉及水平填充,但显然也可以修改以添加垂直填充。