如何根据宽度有限的文本更改 UILabel 大小

Posted

技术标签:

【中文标题】如何根据宽度有限的文本更改 UILabel 大小【英文标题】:How to change UILabel size as per text with limited width 【发布时间】:2013-11-11 12:29:05 【问题描述】:

目前我的标签默认宽度为 100 像素。

标签上的文字动态变化

我的要求是

标签大小应根据文本变化,其宽度应限制为 300 像素。

300 像素后,文本进入下一行,标签的高度必须增加。

如何实现这个场景..

self.messageLabel = [[UILabel alloc] init];

self.messageLabel.frame = CGRectMake(0, 0, 100, 20);

self.messageLabel.textAlignment = NSTextAlignmentCenter;
self.messageLabel.font = [UIFont boldSystemFontOfSize:16];

messageLabel.numberOfLines = 0;
messageLabel.lineBreakMode = NSLineBreakByWordWrapping;

[self.view addSubview:messageLabel];

获取文字大小:

CGSize labelSize = [self.messageLabel.text sizeWithFont:self.messageLabel.font];

我可以根据文本更改标签的宽度

self.messageLabel.frame = CGRectMake(0, 0, self.frame.size.width-10, 20);

但是如何在每 300 像素后将文本移动到下一行

标签尺寸也会随着高度的增加而增加。

【问题讨论】:

【参考方案1】:
-(CGSize)getLabelSize:(NSString *)text


   UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:14.0];
    CGSize constraintSize = CGSizeMake(300.0f, MAXFLOAT);
    CGSize labelSize = [text sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
return labelSize;




使用此方法。 希望对你有帮助。

【讨论】:

以上是关于如何根据宽度有限的文本更改 UILabel 大小的主要内容,如果未能解决你的问题,请参考以下文章

根据 `UITableViewCell` 中的 `UILabel` 文本更改 `UIView` 宽度

如何根据标签可用的高度调整 UILabel 字体大小

当大小不成比例时如何在 UILabel 中适合文本

如何使用自动布局调整 UILabel 宽度以适合文本?

iOS-UILabel根据文本字体大小计算label宽度;以及自适应高度

当视图宽度发生变化时,如何使 UILabel 正确调整其尺寸?