Objective c CGRect-boundingrectwithsize用于长NSString不工作

Objective c CGRect-boundingrectwithsize用于长NSString不工作,objective-c,uitableview,nsstring,cgrect,heightforrowatindexpath,Objective C,Uitableview,Nsstring,Cgrect,Heightforrowatindexpath,我有一个方法,返回NSString的高度,并返回tableview方法上的高度:heightForRowAtIndexPath,但当NSString长度超过2段时,字符串末尾的一小部分会被切断 - (float)heightWithFont:(UIFont *)font width:(float)width { CGRect frame = [string boundingRectWithSize:CGSizeMake(width, 9999.f)

我有一个方法,返回NSString的高度,并返回tableview方法上的高度:heightForRowAtIndexPath,但当NSString长度超过2段时,字符串末尾的一小部分会被切断

- (float)heightWithFont:(UIFont *)font width:(float)width {    
CGRect frame = [string boundingRectWithSize:CGSizeMake(width, 9999.f)
                                  options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
                               attributes:@{ NSFontAttributeName: font}
                                  context:nil];
return frame.size.height; }

您确定宽度正确吗?1像素可能很重要。宽度取决于屏幕大小。UIScreen.mainScreen.bounds.size.width-16.f这是基准高度。为什么它不基于表视图的大小?那么16是从哪里来的呢?16是硬编码的,给了它额外的间距,我不知道为什么它不是基于tableview(处理别人编写的代码)。但是我试着以tableview为基础,结果是一样的,以tableview为基础,然后找出16需要更改为什么。