0

我所拥有的是:

  • 一个 NSString 可以有 1 到 400 个字符之间的任意长度
  • 一个 UITableViewCell(自定义布局)

我尝试使用具有多行的 UILabel,设置文本并调用 sizeToFit。这并不总是有效,大多数时候 UILabel 只是剪掉不适合的字符串部分。此外,由于文本的长度不同,我需要不同大小的 UITableViewCells,并且在调用“tableView: cellForRowAtIndexPath:”时我不知道高度是多少。

所以我需要的是一个非滚动的 UI 元素,它能够显示文本并调整其高度(宽度应保持不变)以完全适合文本。如前所述,sizeToFit 方法主要产生垃圾。

4

2 回答 2

2

您可以使用 SizeWithFont: 计算单元格所需的高度并将其存储在一个数组中,以便您可以在 HeightForRowAtIndexPath 中返回该高度。如果您需要更新文本,只需有一个方法重新计算高度,将其保存到数组中,然后更新表格。就像是:

 CGSize constraintSize;
 constraintSize.width = 290.0f;
 constraintSize.height = MAXFLOAT;
 NSString *text = @"YOUR TEXT"

 CGSize theSize = [text sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

 NSLog(@"height: %f",theSize.height);

会给你身高。

于 2012-07-04T18:30:57.163 回答
0

当您在电话应用程序中输入一个 loooong 号码时,此配置应该会为您提供类似于您所看到的内容 -

label.minimumFontSize = 4; //a very small font size
label.adjustsFontSizeToFitWidth = YES;
label.lineBreakMode = UILineBreakModeWordWrap;// change to what works for you
label.numberOfLines = 0;

请参阅lineBreakMode 文档

于 2012-07-04T18:24:15.300 回答