当 "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
希望有用。
干杯。
我正在开发一个带有 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
希望有用。
干杯。