UICollectionView最初动画单元格

时间:2013-07-18 17:05:44

标签: ios animation transform uicollectionview

我提供了一个带有uicollectionview的视图控制器。我希望细胞从顶部开始动画。

我的布局是flowlayout的子类,所以我重写了这个方法:

- (UICollectionViewLayoutAttributes *) initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewLayoutAttributes* attributes = [super initialLayoutAttributesForAppearingItemAtIndexPath:indexPath];
    CGFloat height = [self collectionViewContentSize].height;
    attributes.transform3D = CATransform3DMakeTranslation(0, -height, 0);
    return attributes;
}

它几乎可以工作,但是我看到细胞在它们动画之前暂时出现(闪烁)在屏幕上。

为什么它们会在变换应用之前出现在最终位置的任何想法,以及我如何阻止它?

1 个答案:

答案 0 :(得分:0)

不是设置变换,而是改变中心:

- (UICollectionViewLayoutAttributes *) initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewLayoutAttributes* attributes = [super initialLayoutAttributesForAppearingItemAtIndexPath:indexPath];
    CGPoint c = attributes.center;
    c.y -= self.collectionViewContentSize.height;
    attributes.center = c;
    return attributes;
}

更改转换总是会导致确定可见性的问题,因为这样做会使frame属性失效。