0

表视图说明
tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 60.0

单元格描述
我在 ContainerView 和 1 个 ImageView 中有一个带有 2 个标签(标题、描述)的单元格,如下所示。单元格高度将根据描述标签的内容而有所不同。
所有视图的约束

我应该处理两种情况

  1. ContainerView.height 大于 (ImageView.height + ImageView.Top + ImageView.Bottom)。这里单元格的高度将基于 ContainerView.height
  2. ContainerView 高度小于 (ImageView.height + ImageView.Top + ImageView.Bottom)。在这里,我希望 Cell 应该考虑 (ImageView.height + ImageView.Top + ImageView.Bottom) 作为高度,并使 ContainerView 垂直居中于 Cell。
    两种情况下的预期结果

问题
如果我为第一种情况设置约束,那么第二种情况不起作用,反之亦然(我知道通过删除 ContrainerView.Top、Bottom 并使其垂直居中到 SuperView 情况 2 结果可以实现)

有没有办法通过使用同一组 IB 约束和 UITableViewAutomaticDimension 在这两种情况下实现预期结果?

4

3 回答 3

0

首先确保您使用的是自调整大小的单元格: https ://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithSelf-SizingTableViewCells.html

将图像视图和容器视图的顶部和底部约束设置到单元格的边缘,并将它们设置为>=.

或者,您可以尝试水平堆栈视图并对单元格的每个边缘进行严格的(最高优先级)约束。

于 2017-02-23T13:39:34.703 回答
0

为图像视图提供固定的高度和宽度。否则让 tableViewCell 知道 imageview 的顶部和底部。这样它就可以计算出正确的像元高度

于 2017-02-23T13:37:05.480 回答
0

使用这些代表,

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
     return 100; // height of default cell
 }

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

编辑

试试这个。

您的视图层次结构应该是这样的

在此处输入图像描述

ImageView 约束

在此处输入图像描述

添加一个视图并将两个标签放入其中。

标签容器约束

在此处输入图像描述

标签标题约束

在此处输入图像描述

标签 描述 约束

在此处输入图像描述

编辑输出

在此处输入图像描述

于 2017-02-23T13:37:30.903 回答