How can I enforce an UILabel to be wider than it should be, by 5 points?
我有一个UILabel,它的背景色为绿色。但是它非常紧密地包裹了文字。我需要绿色背景比文字略宽一点,大约5点。我该如何实现?
详细信息
标签在情节提要中创建,并且具有水平间距约束。我猜您可以忽略约束,因为我已经处理了任何宽度。
建议要求
我想我需要一个可以在UILabel的子类中覆盖的方法,以将其宽度增加5点。有人知道我应该重写哪种方法吗?
您可以尝试将UILabel类的子类化并覆盖下面的方法-
1 2 3 4 | - (void)drawTextInRect:(CGRect)rect { UIEdgeInsets insets = {0, 5, 0, 5}; [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)]; } |
希望这对您有帮助!
最后,我解决了我的问题!这样很好-
制作
因此,类似:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | - (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; } |
请注意,这仅涉及水平填充,但显然可以进行修改以添加垂直填充。
您可以通过首先调用sizeToFit来实现,它将缩小框架并适合文本,然后可以将宽度增加10个像素,并记住保持其居中对齐。
希望有帮助。.让我知道...:)
我认为以下代码将为您服务
1 2 3 | CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:22 ]].width; label.frame = CGRectMake(point.x, point.y, width+5,height); |