UITextView文本在有大量文本时被截断
我有一个包含UITextView的UITableViewCell子类,其中滚动关闭。我把它的框架是这样,在我的表视图细胞layoutSubviews方法:UITextView文本在有大量文本时被截断
CGRect frame = self.bodyTextView.frame;
CGSize size = self.bodyTextView.contentSize;
frame.size = size;
self.bodyTextView.frame = frame;
这一直罚款一段时间,但我注意到,在一个情况下我有一个特别大量的文字,文本正在被切断。我已将文本视图框架背景颜色设置为橙色,以便我可以验证框架设置是否正确。下面是一个例子(我只示出了文本视图的底部):
框架是基于文本的正确大小(在这种情况下1019个点),但文本之前停止文本视图的底部。我也看到文本通过一条线的一部分被截断(即,最后一行可见文本的文本被水平切掉一半)。有没有人知道这里发生了什么?
其他一些要点:
- 意见为我所有的表视图细胞具有更短的工作内容以及文本。
- 如果我在上面显示的情况下增加了文本的数量,文本视图高度会增加,但文本仍然会在相同的位置被截断。
根据this和类似的答案,这个问题可能是“在UITextView中已经添加到视图后,正确的contentSize仅适用......在此之前,它等于frame.size”
我建议你以不同的方式计算高度,比如-sizeWithFont:或者-sizeTofit
感谢您的链接。这很有趣,但我的框架似乎已经正确设置,它只是因为某些原因被切断的文本。我试着自己计算框架高度,并使用sizeToFit,但它们没有效果。 – Darren
我真的很抱歉,我误解了这个问题。 因此,调整uitextview的框架大小似乎不会影响更大空间内容的新绘制。你有没有看过这个[问题?](http://stackoverflow.com/questions/16301147/why-uitextview-draws-text-in-bad-frame-after-resizing) – dimuz
这导致我的答案:我忘了打电话给[超级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;
希望它可以帮助你。
你是否也在增加单元高度来代表内容大小? –
是的,单元格高度在表视图委托heightForRowAtIndexPath方法中设置,并为表格视图单元格设置正确的高度。 – Darren