iOS:UICollectionViewCell 动画部分更改单元格内容
Posted
技术标签:
【中文标题】iOS:UICollectionViewCell 动画部分更改单元格内容【英文标题】:iOS: UICollectionViewCell animation change cells content partially 【发布时间】:2013-07-17 00:55:35 【问题描述】:我有带有单元格的 UICollectionView。我需要更改 UIImageView 中的单元格图像。但是我需要改变它不是在一个单元格中,而是从一个单元格更改为 30,例如。 (需要更改值的单元格是更改。) 我想用动画来做这个。另外,我不想同时更改所有必须更改的单元格。我想先改变一些,在短时间内改变更多等等,直到一切都改变。是否可以?有什么我可以做到这一点的例子吗?
我已经制定了一种可以一次性改变的方法,但这不是我想要的。如果有人想查看此代码,我会在更新后将其发布在这里,目前我没有理由发布它(因为我认为这是一种完全不同的方式,显示同时更改和部分更改)。
【问题讨论】:
我认为没有任何自动方法可以做到这一点。您可能必须设置一个 NSTimer,并在每次触发时调用一个动画(或一组动画)。 【参考方案1】:一点也不难,实际上,这完全取决于您如何加载单元格。例如,我刚刚做了一个简单的 hack:
AnimatedCell.m
UICollectionViewCell 子类
- (void)setImage:(UIImage*)image animatedWithDelay:(NSTimeInterval)delay
self.imageView.image = image;
// Apply the change immediately
if (delay < 0.01)
return;
self.imageView.alpha = 0.0;
[UIView animateWithDuration:0.5 delay:delay options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveEaseInOut animations:^
self.imageView.alpha = 1.0;
completion:nil];
这是一个使用 UIView 方便的动画方法的简单淡入,以后你可能想要更花哨的东西!无论如何,现在,我们需要设置内容并计算适当的延迟。
ViewController.m
符合 UICollectionViewDataSource 和 UICollectionViewDelegate
@interface ViewController () <UICollectionViewDataSource, UICollectionViewDelegate>
@property (nonatomic,assign) CGFloat delay;
@end
@implementation ViewController
CGFloat const kDelayMinimum = 0.02;
CGFloat const kDelayIncrement = 0.01;
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
AnimatedCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collection.cell" forIndexPath:indexPath];
[cell setImage:[UIImage imageNamed:@"photo.png"] animatedWithDelay:self.delay];
self.delay += kDelayIncrement;
return cell;
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
self.delay = kDelayMinimum;
// <Rest of the code>
@end
这确实是一个简单的技巧,我只是增加每个正在呈现的单元格的延迟,然后,当用户滚动时,延迟被重置为最小,否则,延迟会增长并失控。
您需要弄清楚如何将其正确插入数据源,处理图像未加载的情况等,但将此作为工作的基础。
【讨论】:
我对@987654323@ 有一点点不懂。当我们拖动滚动视图时会发生什么?延迟计数器将是最小的,结果是什么?以上是关于iOS:UICollectionViewCell 动画部分更改单元格内容的主要内容,如果未能解决你的问题,请参考以下文章
iOS中UIcollectionviewCell的动态宽度?
iOS 子类 UICollectionViewCell 自定义 init 方法
iOS swift UICollectionviewcell 快照错误
iOS:如何更改 UICollectionViewCell 的方向?