我需要将UITextView的高度从上到下计算到光标。我正在修剪它包含的文本(因此它只会到达光标),然后使用NSString的sizeWithFont:constrainedToSize:lineBreakMode:
方法来计算高度,如下所示:
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
方法恰好是四个字符。这里有两个屏幕截图显示我的意思:
有谁能告诉我发生了什么事?
答案 0 :(得分:6)
@ Vladimir的评论是正确的我认为 - NSString没有考虑到UITextField的边距。
您可以尝试获取光标前的文本并创建仅包含该文本的新UITextField。
然后,如果您在新文本字段上调用[tempTextField sizeToFit]
,那么它的边界应该是您要查找的尺寸。