在iOS中动画集合视图单元格

时间:2013-11-04 21:32:47

标签: ios6 ios7 core-animation uicollectionview uicollectionviewcell

当我的视图控制器视图出现时,我希望其集合视图中的所有单元格都水平翻转。

如何做到这一点?我查看了UIDynamics并没有找到翻转动画。我有一个动画使用Core Animation来翻转视图,我不知道如何将它应用到单元格。

1 个答案:

答案 0 :(得分:2)

您可以在UICollectionViewFlowLayout的子类中使用此方法:

- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath
{
    UICollectionViewLayoutAttributes *layoutAttributes = [super initialLayoutAttributesForAppearingItemAtIndexPath:itemIndexPath];

    CATransform3D transform = CATransform3DMakeRotation(DEGREES_TO_RADIANS(180.0), 0.0, 1.0, 0.0);
layoutAttributes.transform3D = transform;

    return layoutAttributes;
}

这基本上做的是抓取collectionViewCell的初始布局属性并使其水平翻转。在插入单元格时,flowLayout将从这些初始属性到该单元格的原始属性执行线性动画。如果调用

,将调用此方法
- (void)performBatchUpdates:(void (^)(void))updates completion:(void (^)(BOOL finished))completion;

并使用

传递您的插入内容
- (void)insertItemsAtIndexPaths:(NSArray *)indexPaths;

进入更新块。