Ios 我如何强制UILabel比它应该的宽5分?
我有一个UILabel,它的背景色为绿色。但它将文本包装得非常紧密。我需要绿色的背景比文本宽一点,大约5点。我怎样才能做到这一点 详细信息 标签在情节提要中创建,并具有水平间距约束。我想,您可以忽略这些约束,因为我已经处理了任意宽度的约束 建议要求Ios 我如何强制UILabel比它应该的宽5分?,ios,objective-c,uilabel,uistoryboard,nslayoutconstraint,Ios,Objective C,Uilabel,Uistoryboard,Nslayoutconstraint,我有一个UILabel,它的背景色为绿色。但它将文本包装得非常紧密。我需要绿色的背景比文本宽一点,大约5点。我怎样才能做到这一点 详细信息 标签在情节提要中创建,并具有水平间距约束。我想,您可以忽略这些约束,因为我已经处理了任意宽度的约束 建议要求 我想我需要一个可以在UILabel的子类中重写的方法,将其宽度增加5个点。有人知道我应该覆盖哪种方法吗?您可以通过调用sizeToFit来实现它。首先,它将缩小帧并适合文本,然后您可以将宽度增加10个像素,并记住保持其中心对齐 希望能有帮助。。让我知
我想我需要一个可以在UILabel的子类中重写的方法,将其宽度增加5个点。有人知道我应该覆盖哪种方法吗?您可以通过调用sizeToFit来实现它。首先,它将缩小帧并适合文本,然后您可以将宽度增加10个像素,并记住保持其中心对齐
希望能有帮助。。让我知道……:) 您可以尝试对UILabel类进行子类化并重写下面的方法-
- (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;
}
请注意,这只涉及水平填充,但显然也可以修改为添加垂直填充。是否以编程方式制作标签?请详细解释您的问题。也许你们可以调整它的宽度?先生们,请检查一下编辑。请检查我的答案以供参考…在调用sizeToFitThanks之前,您需要覆盖sizeThatFits:。这很有效。不管怎样,我想对UILabel类进行子类化。它有一个小问题。。。这并不是让我的标签更宽,而是让文字区域更小。。。在这种情况下,你必须增加标签的宽度。它更可能是填充而不是边距,它包含在标签的内部