2016-04-14 42 views
2

我得到了错误的高度的UITextView的,甚至我计算它的大小是这样的:获取错误高度的UITextView使用boundingRectWithSize:选择:背景

CGRect requiredHeight = [self boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) 
              options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) 
              context:nil]; 

当我高度添加到我的框架我可以看到所有的文字,但不是最后一行。我不知道为什么。 (在将其转换为NSAttributedString之前,文本是HTML)。

+0

尝试检查您的字符串中的意外字符。 –

+0

让我检查@EvgenyKarkan但它是一个法国字符串,我从服务器 – Gabox

+0

收到它似乎并不是问题。我删除了所有非常见字符,但仍然得到错误的大小。 @EvgenyKarkan – Gabox

回答

3

所以,答案很明显,但并不总是我们这么容易看到的事情!

说明:

答案是,如果我们需要得到一个特定领域的高度(也可能是标签,TextView的,等等),我们应该使用的方法从这些字段来计算它的高度,由于他们可以有一些特定的属性,如果我们根据文本计算高度(不考虑字段),我们不考虑该字段可能具有的特殊属性。

简短的回答:

那么简单的答案,为UITextView你应该使用[textView sizeThatFits:]来获得它的高度,它可能是,如果你不使用auto layout做到这一点的最好办法。

建议: 如果您可以轻松迁移您的用户界面,我鼓励您使用autolayout

+3

'sizeThatFits'返回一个精确的高度,其中'boundingRectWithSize'不是。谢谢! – capikaw