我知道这里已经有很多关于这个问题的潜在答案,但到目前为止,我看到的所有答案中有 99.995% 使用 sizeWithFont,现在已弃用。
我在这里处理一个 tableviewcell,所以它应该很简单,但事情对我来说并不奏效。这是通过在线阅读一些答案而整理的代码。这是一个单元格标签。
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *myString = [self.locations[indexPath.row] locationDescription];
return [self heightForText:myString] + 44.0;
}
-(CGFloat)heightForText:(NSString *)text{
NSInteger MAX_HEIGHT = 10000;
UILabel *cellLabelView = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, MAX_HEIGHT)];
cellLabelView.text = text;
cellLabelView.font = [UIFont fontWithName:@"Helvetica Neue Light" size:18];
[cellLabelView sizeToFit];
return cellLabelView.frame.size.height;
}
故事板中定义的高度设置为 44,标签本身的行设置为 0,以便标签可以决定它需要多大。
问题#1:如果设置为标签的文本没有自动换行,我仍然(显然)得到额外的填充,这不是我想要的。我不确定如何计算是否真的有自动换行。如果没有自动换行(即文本不长于标签,那么我只想返回 44)。
问题 #2:由于某种原因,如果我的文本太长,例如价值 5 行,则字符串末尾的一些文本由于某种原因被截断,尽管 MAXHEIGHT 为 10,000,但它几乎就像它决定停止自动换行。如果此时我增加填充,比如说 88,那么我可以看到所有内容。(诡异的)。
寻找一些优雅的解决方案、反馈、帮助等等。谢谢!