如何计算动态textView的正确高度

时间:2011-07-13 12:25:39

标签: ios

我正在计算动态textView的正确高度。但我在这里得不到正确的高度。我该怎么做才能获得正确的身高。我必须展示一些阿拉伯文字。获得正确尺寸的任何技巧。请帮帮我

CGSize size = [foundationTrimmed sizeWithFont:newsSecondPart.font constrainedToSize:             CGSizeMake(newsSecondPart.frame.size.width-11,10000)];
size.height = size.height + 50;

CGRect newsSecondPartFrame = newsSecondPart.frame;
newsSecondPartFrame.size.height = size.height;
newsSecondPart.frame = newsSecondPartFrame;

CGRect CGRectnewsImageFrame = newsImageView.frame;
CGRectnewsImageFrame.origin.y = newsSecondPartFrame.size.height+40;   
newsImageView.frame = CGRectnewsImageFrame;

scrollView.contentSize = CGSizeMake(  0, newsSecondPartFrame.size.height+CGRectnewsImageFrame.size.height+ 100);

newsSecondPart.text = foundationTrimmed;

1 个答案:

答案 0 :(得分:1)

假设带有两个红点的文本视图是您的textview(处于当前状态)。

enter image description here

textview左上角的红点坐标为(CGRectGetMinX(textview.frame), CGRectGetMinY(textView.frame))

textview右下角的红点坐标为(CGRectGetMaxX(textview.frame), CGRectGetMaxY(textview.frame))

这是因为UIViews坐标系的几何形状导致“x”坐标在向右移动时增加,而“y”坐标在向下移动时增加,因此原点位于最左上角的观点。

您想要视图的高度,因此您有三个选项:

选项1。第一个选项是减去textview的底部y坐标和y坐标,如下所示:

int heightOfTextView = (CGRectGetMaxY(textview.frame)) - (CGRectGetMinY(textview.frame));

选项2。第二个选项是根据textview的边界简单地获取最大y坐标。首先,您应该了解视图框架及其边界之间的区别。这个框架和边界的定义取自this问题:

  

UIView的边界是矩形,表示为相对于其自身坐标系(0,0)的位置(x,y)和大小(宽度,高度)。

     

UIView的框架是矩形,表示为相对于其所包含的超级视图的位置(x,y)和大小(宽度,高度)。

所以你会为第二个选项做到这一点:

int heightOfTextView = CGRectGetMaxY(textview.bounds);

选项3。此选项实际上是最简单的方法:

int heightOfTextView = textview.bounds.size.height;

使用三个选项中的任何一个,您最终得到文本视图的正确高度,并且可以将此代码放在您想要计算textview高度的任何位置。请注意:如果您使用setBoundsOrigin:更改边界,则第二个选项将无效,但您不太可能使用textview进行更改。

希望这有帮助!