欢迎访问宙启技术站
智能推送

iOS 设置UILabel的行间距并自适应高度的方法

发布时间:2023-05-18 06:39:27

在iOS开发中,UILabel一直是我们经常使用的UI元素之一。在很多情况下,我们需要设置UILabel的行间距,并让它自适应高度,以适应不同长度的内容。

下面介绍一种简单的方法,可以实现UILabel的行间距和自适应高度。步骤如下:

1. 导入CoreText.framework

使用前需要导入CoreText.framework,步骤如下:

在Xcode工程的project navigator中,选中项目名称,然后在TARGETS下拉菜单选择工程名称,在General标签页的Linked Frameworks and Libraries选项中点击+,然后搜索CoreText,点击Add引入即可。

2. 创建NSMutableAttributedString

在需要设置行间距的UILabel上创建NSMutableAttributedString,然后设置行间距和字体等属性。代码如下:

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"这是需要设置行间距的文本"];

//设置行间距
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:10];//调整行间距
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [str length])];

//设置字体大小和颜色
[attributedString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, [str length])];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, [str length])];

label.attributedText = attributedString;

3. 自适应高度

通过设置numberOfLines为0,让UILabel自动适应高度。代码如下:

label.numberOfLines = 0;

CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];

[label setFrame:CGRectMake(label.frame.origin.x, label.frame.origin.y, size.width, size.height)];

通过以上三步操作,我们就可以很方便地设置UILabel的行间距并自适应高度。完整代码如下:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 0)];
label.numberOfLines = 0;
label.backgroundColor = [UIColor yellowColor];

NSString *str = @"这是需要设置行间距的文本";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:str];

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:10];//调整行间距
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [str length])];

[attributedString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, [str length])];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, [str length])];

label.attributedText = attributedString;

CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];

[label setFrame:CGRectMake(label.frame.origin.x, label.frame.origin.y, size.width, size.height)];

[self.view addSubview:label];

以上就是设置UILabel行间距并自适应高度的方法。小伙伴们可以根据自己的需要进行调整。