在我的应用程序中,我有一个带有帖子的提要。每个帖子由 中的一个单元格表示UITableView
。帖子有两种状态:已读或未读。每个单元格都有一个UIImageView
,它必须根据此状态显示不同的图像。我在表控制器的tableView:cellForRowAtIndexPath:
方法中设置了这个 imageView 的图像。
我还在滚动表格时检查单元格的可见性,当单元格变得可见时,它的状态会发生变化,因此单元格的图像会随着动画而改变。但是,当重用单元格时,此动画无法正常工作。第一个变为可见的单元格已正确设置动画,但第一个单元格之后的所有单元格在出现在屏幕上时都已生成图像,因此不会为它们触发动画。这是我的做法:
// This is called when a cell becomes visible
- (void)setIsVisible:(Boolean)isVisible
{
if (isVisible)
{
UIImage * toImage = [UIImage imageNamed:@"img-cell-read.png"];
[UIView transitionWithView:self.myImageView
duration:2.0f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
self.myImageView.image = toImage;
} completion:NULL];
}
_isVisible = isVisible;
}
我意识到当我重用一个单元格时,我应该以某种方式重置这个动画并重新启动它,但我不明白我应该怎么做。此外,如果我尝试为单元格的背景颜色而不是图像设置动画,它可以很好地重复使用。