用sizeWithFont计算UITextView文本的高度:constrainedToSize:lineBreakMode似乎没有返回正确的结果

时间:2010-06-29 13:59:44

标签: cocoa-touch uikit uitextview

我正在尝试计算受UITextView约束的文本的高度,但它似乎没有返回正确的结果。

这是我的代码:

- (void)textViewDidChange:(UITextView *)aTextView {
    CGSize textSize = [aTextView.text sizeWithFont:aTextView.font constrainedToSize:aTextView.frame.size lineBreakMode:UILineBreakModeWordWrap];
    counter.text = [NSString stringWithFormat:@"%f", textSize.height];
}

您可以下载the sample project and a short screencast that illustrates the problem (418 KB)

总之,问题是当我在一行的末尾键入一个长单词时,单词会移动到下一行,但是当它发生时,字符串的高度没有正确调整。

任何帮助表示感谢。

最佳,
托马斯。

P.S。 :它发生在iPhone SDK 3.1.3

1 个答案:

答案 0 :(得分:5)

问题是UITextField在它实际绘制和包装文本的区域周围有一个小的边距。据我所知,没有编程方法来获得这个大小,但只是从大小中减去6左右会使它表现得恰到好处。