动画UICollectionView单元格大小更改并重新定位周围的单元格

时间:2014-04-18 07:26:33

标签: objective-c ios7 uicollectionview uicollectionviewcell uicollectionviewlayout

enter image description here

目标:

为单元格高度的变化设置动画并重新定位周围的单元格。

情境:

集合视图中的某些单元格会加载远程图像。最初,这些单元格的大小是静态的,并显示了活动指示符。加载图像后,将其添加到其单元格中,并更改单元格的高度以适合照片。

备注:

我使用animateWithDuration为单元格的帧更改设置动画。这样可以正常工作,除了增加的单元尺寸使其与下面的单元重叠。在调整目标单元格大小并更新collectionView.collectionViewLayout invalidateLayout返回的大小但没有成功后,我盲目地尝试调用sizeForItemAtIndexPath

有什么建议吗?谢谢!

示例代码:

https://github.com/juzzin/ResizeUICollectionViewCell/blob/master/ResizeUICollectionViewCell/FLOViewController.m

enter image description here

1 个答案:

答案 0 :(得分:13)

基本上你需要做三个步骤

1.验证collectionViewLayout

2.执行批量更新:

 ...
 //invalidate layout
[collectionView performBatchUpdates:^{
    // make your cell at indexPath return a new size
} completion:^(BOOL finished) {

}];

3.在sizeForItemAtIndexpath

返回新尺寸