我需要计算textView的高度。
我正在以不同的方式使用:
1
CGSize new_size= [self sizeThatFits:CGSizeMake(self.frame.size.width, MAXFLOAT)];
CGFloat newHeight = new_size.height;
CGRect new_frame = self.frame;
new_frame.size.height = newHeight;
[self setFrame:new_frame];
2
CGSize size = CGSizeMake(self.frame.size.width,MAXFLOAT);
NSStringDrawingContext *context = [[NSStringDrawingContext alloc] init];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineBreakMode:NSLineBreakByCharWrapping];
NSDictionary *attributes = @{ NSFontAttributeName: self.font, NSParagraphStyleAttributeName : paragraphStyle };
CGRect frame = [self.text boundingRectWithSize:size
options:(NSStringDrawingUsesLineFragmentOrigin)
attributes:attributes
context:context];
CGFloat newHeight = frame.size.height;
CGRect new_frame = self.frame;
new_frame.size.height = newHeight;
[self setFrame:new_frame];
有时候它们返回相同的高度,有时候第二种方法返回高度<从第一种方法开始。
但是第一种方法一直返回正确的高度!
第二种方法的问题是什么?
修改
我注意到:当height < 59
时,两个函数都返回相同的东西,而当height >59
时,第一个方法返回正确的高度。第二个回归59。
修改 看来,当我使用系统字体时:
[self setFont:[UIFont systemFontOfSize:15]]
以上两种方法都能正常工作。
但是当我使用另一种字体时:
[self setFont:[UIFont fontWithName:@"Roboto-Light" size:15]]
然后第二种方法无法正常工作。
为什么会这样?