【发布时间】:2017-06-28 18:00:04
【问题描述】:
我有一个自定义 UITableViewCell,其中有一个包含多个子视图的 UIView。根据具体情况,我会隐藏其中的一些视图,并更新约束以使父 UIView 仍位于我的 UITableViewCell 的中心。
我的问题是,由于单元格重用,这仅在未直接显示单元格时才有效(如果单元格不是表格中首先出现的顶部单元格之一)。在这种情况下,当我向下滚动并向上滚动时,它会再次起作用。图片将帮助我解释这一点:
这是第一次加载 UITableView 时显示的内容。第一个单元格是包含所有信息的常规单元格,第二个单元格是隐藏第一个元素的单元格。
当我向下滚动然后再向上滚动时会发生这种情况。
如您所见,这正是我想要的。约束已正确更新,但只有在单元格从可见屏幕上消失并再次出现时才更新。
[reviewsAndPriceView setNeedsUpdateConstraints];
[reviewsAndPriceView setNeedsLayout];
[reviewsAndPriceView layoutIfNeeded];
[self updateConstraints];
[self setNeedsUpdateConstraints];
[self setNeedsLayout];
[self layoutIfNeeded];
还有各种变体,但都行不通。有什么方法可以做到这一点?
【问题讨论】:
标签: ios objective-c uitableview nslayoutconstraint reusability