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

Cocoa touch 使用sizeWithFont:constrainedToSize:lineBreakMode计算UITextView文本的高度似乎没有返回正确的结果,cocoa-touch,uikit,uitextview,Cocoa Touch,Uikit,Uitextview,我试图计算受UITextView约束的文本的高度,但它似乎没有返回正确的结果 这是我的密码: - (void)textViewDidChange:(UITextView *)aTextView { CGSize textSize = [aTextView.text sizeWithFont:aTextView.font constrainedToSize:aTextView.frame.size lineBreakMode:UILineBreakModeWordWrap]; co

我试图计算受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];
}
你可以下载

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

谢谢你的帮助

最好的, 托马斯


注意:iPhone SDK 3.1.3出现了这种情况。问题是UITextField在它实际绘制和包装文本的区域周围有一点空白。据我所知,没有任何编程方法可以获得此尺寸,但只要从尺寸中减去6左右,就可以使其正常工作。

谢谢您的回答。我猜想UITextView确实有某种填充。我希望有一个干净的方法来确定它的大小。在我的示例中,将11减去textView的宽度和高度就可以了。如下所示::-voidtextViewDidChange:UITextView*aTextView{CGSize textViewSize=aTextView.frame.size;textViewSize.width-=kTextViewPadding;textViewSize.height-=kTextViewPadding;CGSize textSize=[aTextView.text sizeWithFont:aTextView.font constrainedToSize:textViewSize lineBreakMode:UILineBreakModeWordWrap];counter.text=[NSString stringWithFormat:@%f,textSize.height];}我想说的是雷达文件,目前使用的是硬编码值。很高兴你找到了它Joshua,你知道UILabel是否有类似的填充吗?