boundingRectWithSize忽略换行符

时间:2014-07-22 15:33:38

标签: ios uitableview nsstring

我正在尝试创建一个包含UITableViewCell的{​​{1}},当用户在textview中输入文本时,单元格应相应增长。 到目前为止,这也很有效,除了UITextView方法在计算新单元格大小时忽略尾随换行符。这就是我的方法调用:

boundingRectWithSize

如果我输入

  CGRect rect = [text boundingRectWithSize:CGSizeMake(self.cellSize.width, CGFLOAT_MAX)
                                   options:NSStringDrawingUsesLineFragmentOrigin
                                attributes:@{NSFontAttributeName:[UIFont fontWithName:@"AvenirNext-Medium" size:14.0]}
                                   context:nil];

(换行符可视化为“\ n”),该方法返回包含两行而不是三行的textview的大小。 我尝试了几个Test \n \n 和als options,但找不到有效的解决方案。我怎样才能以有效的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

此问题是搜索特定错误/功能时在Google上的第一个搜索结果。它是可解决的,解决该问题的方法是在“选项”参数中提供一个附加标志: NSStringDrawingUsesFontLeading

该标志强制该方法使用字体的行间距来计算文本占用范围,即从每行底部到下一行底部的距离(参考:https://www.programmersought.com/article/6564672405/

我还发现,根据所使用的字体,您可能需要在结果矩形的height属性中添加一些额外的填充。

CGRect rect = [text boundingRectWithSize:CGSizeMake(self.cellSize.width, CGFLOAT_MAX)
                                   options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
                                attributes:@{NSFontAttributeName:[UIFont fontWithName:@"AvenirNext-Medium" size:14.0]}
                                   context:nil];