当 "awakeFromNib" 运行 时,UICollectionViewCell 内的动画不会 运行。

Animation inside UICollectionViewCell doesn't run when "awakeFromNib" runs.

我正在开发一个带有 Cell 的 UICollectionViewController,其中包含内部 "UIView"s,显示时会动画化(只是一个简单的 y 轴移动)。

我的问题是,然后首先从 nib 文件加载单元格,动画没有 ​​运行,但单元格正在 "reused",动画正在 运行。

我是这样做的:

- (void)loadCellWithAnimation{
    CGRect prevRect = self.viewThatAnimates.frame;
    prevRect.origin.y = prevRect.origin.y+10;
    [UIView animatewithDuration:0.5f animations:^{self.viewThatAnimates.frame = prevRect}];
}

在我的 collectionViewController 上:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
        [cell loadCellWithAnimation];
    return cell;
}

正如我所说,动画在 "reused" 时工作正常,但在从 nib 唤醒时 运行 却没有。

我已经在几个不同的场景中对此进行了测试,结果总是一样的。

感谢您的帮助 ;)

因为直到

return cell;

已从您的委托方法中调用,awakeFromNib未被调用。

您可以在

中尝试动画
- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath

希望有用。

干杯。