我的UITableViewCell
中有一个按钮,必须展开该单元格。我的单元格中有一些垂直布局约束,我必须在展开时修改以重新排列子视图。
我在tableView:heightForRowAtIndexPath:
用户滚动后,当屏幕返回时,扩展的单元格必须仍然展开。所以在tableView:cellForRowAtIndexPath:
中(我也在tableView:willDisplayCell:forRowAtIndexPath:
中尝试了同样的结果)我做了类似的事情:
if ([_indexPathOfExpandedCell isEqual:indexPath]) {
[cell setConstraintToLargeValue];
} else {
[cell setConstraintToSmallValue];
}
问题是,当扩展的单元格返回到屏幕并调用setConstraintToLargeValue
时,当我尝试增加垂直约束的constant
属性时,我得到了
无法同时满足约束
消息。到目前为止我想到的是,在修改约束时cell
具有正确的高度(我在heightFor...
中返回的高度),但cell.contentView
的高度要小得多从扩展之前开始,这就是造成错误的原因。有人有解决方案吗?提前谢谢。
答案 0 :(得分:0)
找到解决方案。我没有在tableView:cellForRowAtIndexPath:
触发约束更改,而只是在单元格isExpanded
上设置了一个标志,并在layoutSubviews
方法中修改了约束,在调用[super layoutSubviews]
之后cell.contentView
变为与cell
相同的高度,我不再在约束之间产生冲突。