如何根据宽度有限的文本更改 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` 宽度