4

我有一个 UITableViewCell 子类,其中包含一个关闭滚动的 UITextView。我在我的表格视图单元格 layoutSubviews 方法中设置了它的框架:

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

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

在此处输入图像描述

框架是基于文本的正确大小(在本例中为 1019 点),但文本在文本视图底部之前停止。我还看到文本在一行中被截断(即最后一个可见文本行的文本被水平截断一半)。有谁知道这里发生了什么?

其他几点:

  • 文本视图适用于我所有内容较短的表格视图单元格。
  • 如果我在上面显示的情况下增加文本量,文本视图高度会增加,但文本仍然会在同一个地方被截断。
4

3 回答 3

4

根据这个和类似的答案,问题可能是“正确的 contentSize 只有在 UITextView 被添加到视图之后才可用......在此之前它等于 frame.size”

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

于 2013-05-30T13:22:04.020 回答
1

使用它来获取 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;

希望它可以帮助你。

于 2013-05-30T13:12:32.067 回答
0

我遇到了同样的问题,并在 textView 填充(在 swift5 中)上解决了它:

yourTextView.textContainerInset = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5)

希望它可以帮助:)

于 2019-11-26T16:40:29.570 回答