基于两个子视图高度

时间:2017-02-23 13:11:21

标签: ios uitableview uitableviewautomaticdimension

TableView说明
tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 60.0

细胞描述
我在ContainerView和1 ImageView中有一个带有2个标签(标题,描述)的单元格,如下所示。细胞高度将根据描述标签的内容而有所不同  Contraints of all views

我应该处理两种情况

  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。
    Expected Result in both the cases
  3. 问题
    如果我为第一种情况设置约束,那么第二种情况不起作用,反之亦然(我知道通过删除ContrainerView.Top,Bottom并使其垂直居中至SuperView案例2结果可以实现)

    有没有办法通过使用相同的IB约束和UITableViewAutomaticDimension来实现两种情况下的预期结果?

2 个答案:

答案 0 :(得分:0)

使用这些代表,

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

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

修改

试试这个。

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

enter image description here

ImageView约束

enter image description here

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

标签容器约束

enter image description here

标签标题约束

enter image description here

标签说明约束

enter image description here

  

修改输出

enter image description here

答案 1 :(得分:0)

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

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

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