我正在使用方法[string sizeWithFont:constrainedToSize:lineBreakMode:]
来估计我正在调整大小的textView
的高度。然而,它似乎总是返回错误的大小。为了调试,我编写了以下代码:
self.textView.font = [UIFont systemFontOfSize:14.0]; // It was this before, anyways
NSLog(@"Real width: %lf %lf", self.textView.contentSize.width, self.textView.frame.size.width);
NSLog(@"Real height: %lf", self.textView.contentSize.height);
NSLog(@"Estimated width: %lf", kOTMessageCellTextWidth);
NSLog(@"Estimated height: %lf", ([message.message sizeWithFont:[UIFont systemFontOfSize:14.0]
constrainedToSize:CGSizeMake(kOTMessageCellTextWidth, CGFLOAT_MAX)
lineBreakMode:UILineBreakModeWordWrap].height));
然而,上述代码揭示了我得到的不一致的结果:
实际宽度:223.000000 223.000000 实际高度:52.000000 预计宽度:223.000000 预计高度:36.000000 实际宽度:223.000000 223.000000 实际高度:142.000000 预计宽度:223.000000 预计高度:126.000000 实际宽度:223.000000 223.000000 实际高度:142.000000 预计宽度:223.000000 预计高度:126.000000
我在this similar question中注意到(显然)
textView
有一些填充限制其实际宽度。那里的建议是将传递给sizeWithFont:
的宽度减小一些数字。推荐数字是11。我的问题是:有没有一种通过编程实际检索此值的方法,或者有我错过的说明这个数字的文档?看起来这个数字应该是可用的,而且不需要猜测和检查,但是我找不到一个可靠的方法来识别它。
提前感谢。
16.0f
(请注意,尽管是浮点数,但该数字会四舍五入到最近的像素;不要试图使用小数),并在通过sizeWithFont:
返回的高度中加上16
。 - Ashoat