如何使用持续时间为单个UICollectionView单元设置动画

时间:2015-04-30 13:34:12

标签: ios objective-c swift uicollectionview

我试图为第一个单元格的高度设置动画,其余部分向上或向下滚动。单元格内部是带有.ScaleAspectFill

的图像视图

如果转换与invalidateLayout()和sizeForItemAtIndexPath交互,我设法做到了,但我无法弄清楚如何动画到结束状态

这就是我正在做的事情:

let cell = collectionView!.cellForItemAtIndexPath(NSIndexPath(forItem: 0,    inSection: 0)) as! HomeFeedCell
var size:CGSize = getNewSize(cell)

UIView.transitionWithView(collectionView!, duration: duration, options: .CurveEaseOut | .LayoutSubviews, animations: {
                cell.frame.size.height = size.height
            }, completion: nil)

这会激活第一个单元格,但不会移动其余单元格。我尝试了invalidateLayout()或重新加载动画块内的可见单元格,但它给出了奇怪的结果

1 个答案:

答案 0 :(得分:1)

因此,如果有人坚持使用相同的答案,也可以使用nil更新调用集合视图的performBatchUpdates:block

let cell = collectionView!.cellForItemAtIndexPath(NSIndexPath(forItem: 0,    inSection: 0)) as! HomeFeedCell
var size:CGSize = getNewSize(cell)

UIView.transitionWithView(collectionView!, duration: duration, options: .CurveEaseOut | .LayoutSubviews, animations: {
                cell.frame.size.height = size.height
            }, completion: nil)

collectionView!.performBatchUpdates(nil, completion: nil)