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