Ios 我如何强制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点。我怎样才能做到这一点

详细信息

标签在情节提要中创建,并具有水平间距约束。我想,您可以忽略这些约束,因为我已经处理了任意宽度的约束

建议要求


我想我需要一个可以在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类进行子类化。它有一个小问题。。。这并不是让我的标签更宽,而是让文字区域更小。。。在这种情况下,你必须增加标签的宽度。它更可能是填充而不是边距,它包含在标签的内部