Xcode:如何在标签文本中添加边距/填充?

16

我有一个带文字的标签:

enter image description here

但是,我想要它有更多的内边距(如果可能的话,边缘也略微圆角)。但是当我在故事板中拉伸标签,使其看起来有内边距,然后重新启动模拟器时,它并不会添加内边距。

我该如何做?顺便说一句,我正在使用自动布局+Objective C。


我不确定这是否有所帮助,因为我从未尝试过,但也许会有所帮助。https://dev59.com/qHA75IYBdhLWcg3wGU-I - PeterPan
有没有通过故事板来实现它的方法? - bigpotato
5个回答

24
如果您想使用布局约束方法,那么这可能是最适合您的解决方案:
您应该使用一个容器视图,并将标签放在其中。然后添加标签的约束条件,这将等同于填充。

enter image description here

在Storyboard文件中选择标签,然后点击底部右侧的约束面板。

Label's constraints to container view

选中标签后,应用布局约束条件,如上所示(确保选中红色“线条”,以便实际应用约束条件)。

End result

橙色视图是容器视图。标签就在里面。

我想只使用一个视图,标签本身就是包含文本的容器。 - user924

6
您可以在Storyboard中选择您的UILabel(或任何视图),进入检查器,然后在身份检查器部分添加如图片所示的值,即可添加圆角。

enter image description here


3

您需要覆盖UILabel的drawRect方法。

示例代码:

#import "OCPaddedLabel.h"
#define PAD 10.0f
#define PAD_VERT 6.0f

@implementation OCPaddedLabel

- (void)drawTextInRect:(CGRect)rect {
    UIEdgeInsets insets = {PAD_VERT, PAD, PAD_VERT, PAD};
    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}

如果您想要添加圆角,您需要:

label.layer.cornerRadius = 15.0f;
label.layer.masksToBounds = YES;

2

1

您可以使用以下代码添加边距:

yourLabel.frame = CGRectMake(0,0,100,100)

5
使用autolayout时应该编辑约束条件而不是框架。 - oltman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接