我需要从上到下计算UITextView的高度。我修剪它包含了(所以它只能上升到光标)文本,然后使用的NSString的sizeWithFont:constrainedToSize:lineBreakMode:
方法制定出的高度,就像这样:为什么NSString sizeWithFont:返回错误的大小?
NSRange range;
range.location = noteTextView.selectedRange.location;
range.length = noteTextView.text.length - range.location;
NSString *string = [noteTextView.text stringByReplacingCharactersInRange:range withString:@""];
CGSize size = [string sizeWithFont:noteTextView.font
constrainedToSize:noteTextView.frame.size
lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"height is: %f \n", size.height);
它做我输入任何东西每次都是这样。
问题是,当我键入NSLog时,它不会记录高度变化,直到我在新行上输入4个字符。这就好像sizeWithFont
方法正好是四个字符一样。这里的一对夫妇的截图显示了我的意思:
谁能告诉我是怎么回事?
问题可能是文本视图在显示文本时在边上有边距,所以它的实际宽度小于textview的帧宽度 – Vladimir 2011-05-13 10:42:49
@Vladimir - 为什么是评论而不是答案?我认为你是绝对正确的,但不能将它作为一个好的答案投票:) – deanWombourne 2011-05-13 10:46:38
你做了很多假设,UITextView完全呈现完成,因为你的计算已经完成了......现在或未来,它可能工作或可能不工作。我猜,@弗拉基米尔已经指出了这个问题。 – Eiko 2011-05-13 10:47:31