ios - 在重用的 UITableViewCell 中使用动画更改图像

标签 ios uitableview uiviewanimation reusability

在我的应用程序中,我有一个带有帖子的提要。每个帖子由 UITableView 中的一个单元格表示.帖子有两种状态:已读或未读。每个单元格都有一个 UIImageView ,它必须根据这个状态显示不同的图像。我在表 Controller 的 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;

}

我意识到当我重用一个单元格时,我应该以某种方式重置这个动画并重新启动它,但我不明白我应该怎么做。此外,如果我尝试为单元格的背景颜色而不是图像设置动画,它可以很好地重复使用。

最佳答案

您可以覆盖 UITableViewCell 中的 prepareForReuse 方法以取消任何动画并将图像重置为原始状态。

- (void)prepareForReuse{
    [super prepareForReuse];

    [self.myImageView.layer removeAllAnimations];
    self.myImageView.image = YOUR_INITIAL_UIIMAGE;
}

还要确保导入 quartz :
#import <QuartzCore/QuartzCore.h>

关于ios - 在重用的 UITableViewCell 中使用动画更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13274143/

相关文章:

iphone - 从 HTML 文件解析图像

ios - 如何让将以模态方式呈现的 UIViewController 的 UIView 始终出现在屏幕底部?

ios - 在 Swift 中的自定义单元格之间切换

swift - 生成多页 PDF UIView

ios - 带 Spring 的 Swift UIView 动画移动到错误的位置然后跳转

ios - UIScrollView 滚动不稳定

ios - 使用应用程序加载器的 Xcode 5 ios 应用程序提交错误

ios - 在 tableview 之外的触摸上隐藏 UITableView

ios - 使用 [self presentModalViewController : animated:] and black screen

ios - UIView动画: simulating velocity