在运行时添加文本时,UI Tableview单元格不会展开

时间:2018-03-31 05:59:08

标签: ios objective-c uitableview

Table view cell

我正在使用聊天应用程序的表格视图,其中聊天响应中添加了两个文本视图中的一个,如图所示。事情是每当我添加一个大文本时,单元格高度不会扩展以显示全文。它只显示该文本的最后一行。我正在使用objective-c。有办法解决这个问题吗?我不想像之前提出的问题那样完全创建新视图,我想要更改此特定视图。

5 个答案:

答案 0 :(得分:3)

首先,您需要使用Label并在label和contentView单元格之间设置顶部和底部约束。

为了使自定义单元格机制起作用,必须将表视图上的rowHeight属性设置为常量UITableViewAutomaticDimension。然后,您只需通过将表视图的estimatedRowHeight属性设置为非零值来启用行高估计,例如:

_tableView.estimatedRowHeight = 44.0; // set to whatever your "average" cell height is
_tableView.rowHeight = UITableViewAutomaticDimension;

答案 1 :(得分:3)

您需要像这样定义自我调整大小的单元格。

    tableCountries.estimatedRowHeight = 100.0;
    tableCountries.rowHeight = UITableViewAutomaticDimension;

确保您有适当的约束。你可以有这样的约束。

enter image description here

enter image description here

在下面的标签中,您需要设置textView顶部位置。这就是为什么当下面的标签展开时它自动展开标签和文本视图将推到底部。

答案 2 :(得分:2)

我认为你的单元格没有达到它的高度,因为textview滚动可能会有所帮助: -

  1. 使用UITableViewAutomaticDimension,为此,您的tableview单元格内容应证明上下前导和尾随约束以计算单元格高度。
  2. 将scrollEnabled设置为" false"为您的textview。
  3. 随着地方的一切,你的牢房肯定会达到它的高度。

答案 3 :(得分:2)

你可以通过多种方式实现这一目标: 1)您可以使用UITableViewAutomaticDimension设置单元格的动态高度。 您需要在故事板中设置适当的约束,如设置顶部和底部。 在ViewDidLoad中添加以下内容:

tblView.rowHeight = UITableViewAutomaticDimension
tblView.estimatedRowHeight = 100

并在tableView单元格的高度方法中:

return UITableViewAutomaticDimension

2)使用以下函数动态查找文本的高度:

let width = 100.0 \\your text label's width you gave 
var height = chatMsg.text?.height(withConstrainedWidth: width, font: chatMsg.font!)

使用上面的代码,您可以找到文字的高度。你可以动态使用它

3)有许多代码可用于聊天应用程序,您只需要传递文本/图像,它将处理其他所有内容。 链接:https://github.com/kerry/iMessageBubble

答案 4 :(得分:1)

添加这两个委托方法:

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewAutomaticDimension;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewAutomaticDimension;
}
  • 使用三个UITableViewCell创建自定义UILabel,例如lbl1,lbl2,lbl3。

将AutoLayout约束添加到lbl1左,右,上和下。固定高度(30)。

然后将相同的约束设置为剩余的两个标签。

以下是主要内容:

1.选择lbl1高度并双击高度约束并设置> = 30

使用lbl2和lbl3做同样的事情。

  • 最后一步是:

  • 选择lbl2顶部约束,更改约束属性,如< = 8。

  • 与lbl3做同样的事情,就是我们所做的一切。

感谢..