我正在尝试创建一个包含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
,但找不到有效的解决方案。我怎样才能以有效的方式做到这一点?
答案 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];