UITableViewCell中的动态大小的视图

时间:2014-07-11 18:28:23

标签: ios uitableview constraints autolayout

我有一个UITableViewCell,其中有两个动态调整大小的视图。我将如何根据使用的约束,实际设置动态高度的位置(行的高度?索引的单元格?)来处理这样的事情。我已经在这里开了几个小时,但似乎无法理解,谢谢。

enter image description here

1 个答案:

答案 0 :(得分:0)

如果动态高度仅基于内容,那么像"V:|[fx1][dh1][dh2][fx2]|"这样的约束会让您获得不可预测的结果。 Autolayout会尝试最好的,但其中一个动态视图将会放弃"放弃"它填补了空间的内在规模。

我认为你有两个选择:

给出第一个"动态"查看更高内容拥抱优先级

如果您需要所有单元格在表格中具有相同的高度,这可能会有效。

[self.dh1 setContentHuggingPriority:UILayoutPriorityRequired
                            forAxis:UILayoutConstraintAxisVertical];

[self.dh2 setContentHuggingPriority:UILayoutPriorityDefaultLow
                            forAxis:UILayoutConstraintAxisVertical];  

根据其内容

调整整个单元格的大小

不要认为它必须适合细胞。调整单元格的大小以适应它的内容。

使用这样的约束:"V:|[fx1(20)][dh1][dh2][fx2(20)]" ...没有'锚定'最后一个固定视图到底部

然后,在heightForRowAtIndexPath中,布局背景中的单元格并进行测量。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

  MyCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CELL"];
  // etc...

  [cell setNeedsLayout];
  [cell layoutIfNeeded];

  return cell.fx2.frame.origin.y + cell.fx2.frame.size.height;
}