el-*_*lor 3 objective-c reusability uitableview ios nslayoutconstraint
我有一个自定义的UITableViewCell,其中我有一个包含多个子视图的UIView.根据具体情况,我隐藏了一些视图,并更新约束,以便父UIView仍然在我的UITableViewCell中居中.
我的问题是,由于单元格重用,这只有在没有直接显示单元格时才有效(如果单元格不是表格中首先出现的顶部单元格之一).在这种情况下,当我向下滚动,然后向上滚动时,它再次起作用.图片将帮助我解释这个:
这是第一次加载UITableView时显示的内容.第一个单元格是包含所有信息的常规单元格,第二个单元格是隐藏第一个元素的单元格.
当我向下滚动然后再向上时会发生这种情况.
如你所见,这正是我想要的.约束已正确更新,但只有一旦细胞从可见屏幕消失,并再次出现.
[reviewsAndPriceView setNeedsUpdateConstraints];
[reviewsAndPriceView setNeedsLayout];
[reviewsAndPriceView layoutIfNeeded];
[self updateConstraints];
[self setNeedsUpdateConstraints];
[self setNeedsLayout];
[self layoutIfNeeded];
Run Code Online (Sandbox Code Playgroud)
各种变化,但它不起作用.有什么办法实现这个目标?
您已经知道它们cells正在被重用。
当您滚动时,某些内容cells正在使用constraint先前显示的内容。
要解决此问题,请call使用重置方法,该方法会将所有内容重置constraint为中指定的默认值xib。
在此方法之后调用负责更改高度/宽度的方法。
仅在最后一次通话中:
[self layoutIfNeeded];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5558 次 |
| 最近记录: |