UITextView文本在有大量文本时被截断

问题描述:

我有一个包含UITextView的UITableViewCell子类,其中滚动关闭。我把它的框架是这样,在我的表视图细胞layoutSubviews方法:UITextView文本在有大量文本时被截断

CGRect frame = self.bodyTextView.frame; 
    CGSize size = self.bodyTextView.contentSize; 
    frame.size = size; 
    self.bodyTextView.frame = frame; 

这一直罚款一段时间,但我注意到,在一个情况下我有一个特别大量的文字,文本正在被切断。我已将文本视图框架背景颜色设置为橙色,以便我可以验证框架设置是否正确。下面是一个例子(我只示出了文本视图的底部):

enter image description here

框架是基于文本的正确大小(在这种情况下1019个点),但文本之前停止文本视图的底部。我也看到文本通过一条线的一部分被截断(即,最后一行可见文本的文本被水平切掉一半)。有没有人知道这里发生了什么?

其他一些要点:

  • 意见为我所有的表视图细胞具有更短的工作内容以及文本。
  • 如果我在上面显示的情况下增加了文本的数量,文本视图高度会增加,但文本仍然会在相同的位置被截断。
+0

你是否也在增加单元高度来代表内容大小? –

+0

是的,单元格高度在表视图委托heightForRowAtIndexPath方法中设置,并为表格视图单元格设置正确的高度。 – Darren

根据this和类似的答案,这个问题可能是“在UITextView中已经添加到视图后,正确的contentSize仅适用......在此之前,它等于frame.size”

我建议你以不同的方式计算高度,比如-sizeWithFont:或者-sizeTofit

+0

感谢您的链接。这很有趣,但我的框架似乎已经正确设置,它只是因为某些原因被切断的文本。我试着自己计算框架高度,并使用sizeToFit,但它们没有效果。 – Darren

+0

我真的很抱歉,我误解了这个问题。 因此,调整uitextview的框架大小似乎不会影响更大空间内容的新绘制。你有没有看过这个[问题?](http://*.com/questions/16301147/why-uitextview-draws-text-in-bad-frame-after-resizing) – dimuz

+0

这导致我的答案:我忘了打电话给[超级layoutSubviews],当我在表格视图单元格类中过度...叹息... – Darren

使用此得到TEXTSIZE

// find the text width; so that btn width can be calculate 
CGSize textSize = [@"YOUR TEXT" sizeWithFont:[UIFont fontWithName:@"Arial" size:20.0] 
           constrainedToSize:CGSizeMake(320.0f, 99999.0f) 
            lineBreakMode:UILineBreakModeWordWrap]; 

,然后以此为设置高度:

CGRect frame = self.bodyTextView.frame; 

frame.size = textSize; 
self.bodyTextView.frame = frame; 

希望它可以帮助你。

+0

感谢您的建议。我的框架已经正确设置,但它只是因为某些原因被切断的文本。我确实试过这个解决方案,只是为了看看会发生什么,但没有任何改变。 – Darren

+0

您是以编程方式还是通过NIB创建了您的textview? –

+0

它在我的子类UITableViewCell xib中。 – Darren