可扩展UITableViewCell中的布局约束

时间:2014-05-21 12:55:46

标签: ios uitableview autolayout

我的UITableViewCell中有一个按钮,必须展开该单元格。我的单元格中有一些垂直布局约束,我必须在展开时修改以重新排列子视图。

我在tableView:heightForRowAtIndexPath:

中返回了每个单元格的高度

用户滚动后,当屏幕返回时,扩展的单元格必须仍然展开。所以在tableView:cellForRowAtIndexPath:中(我也在tableView:willDisplayCell:forRowAtIndexPath:中尝试了同样的结果)我做了类似的事情:

if ([_indexPathOfExpandedCell isEqual:indexPath]) {
    [cell setConstraintToLargeValue];
} else {
    [cell setConstraintToSmallValue];
}

问题是,当扩展的单元格返回到屏幕并调用setConstraintToLargeValue时,当我尝试增加垂直约束的constant属性时,我得到了

  

无法同时满足约束

消息。到目前为止我想到的是,在修改约束时cell具有正确的高度(我在heightFor...中返回的高度),但cell.contentView的高度要小得多从扩展之前开始,这就是造成错误的原因。有人有解决方案吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

找到解决方案。我没有在tableView:cellForRowAtIndexPath:触发约束更改,而只是在单元格isExpanded上设置了一个标志,并在layoutSubviews方法中修改了约束,在调用[super layoutSubviews]之后cell.contentView变为与cell相同的高度,我不再在约束之间产生冲突。