目标:
为单元格高度的变化设置动画并重新定位周围的单元格。
情境:
集合视图中的某些单元格会加载远程图像。最初,这些单元格的大小是静态的,并显示了活动指示符。加载图像后,将其添加到其单元格中,并更改单元格的高度以适合照片。
备注:
我使用animateWithDuration
为单元格的帧更改设置动画。这样可以正常工作,除了增加的单元尺寸使其与下面的单元重叠。在调整目标单元格大小并更新collectionView.collectionViewLayout invalidateLayout
返回的大小但没有成功后,我盲目地尝试调用sizeForItemAtIndexPath
。
有什么建议吗?谢谢!
示例代码:
答案 0 :(得分:13)
基本上你需要做三个步骤
1.验证collectionViewLayout
2.执行批量更新:
...
//invalidate layout
[collectionView performBatchUpdates:^{
// make your cell at indexPath return a new size
} completion:^(BOOL finished) {
}];
3.在sizeForItemAtIndexpath