【发布时间】:2012-10-09 19:28:50
【问题描述】:
我有点困惑,没有什么可以求助的。我有一个 iOS 应用程序,它从服务器获取消息并将其填充到 UITableView 中的单元格中。每次从服务器更新某个对象时,该更新都会触发单元动画。在我们的例子中,我们有一个游戏得分表。如果有人失去一分,他们的单元格将闪烁红色,如果他们获得一分,他们的单元格将闪烁绿色。简单的概念效果很好,我们的用户喜欢反馈。他们不喜欢的是,当他们滚动时,他们看到单元格具有与之相关的随机颜色并在那里停留大约一秒钟。我相信这与细胞被回收的方式有关。我尝试了有关此问题的各种检查,检查单元格是否具有相同的值,手动将颜色设置为白色等,但这些方法都不起作用。
总而言之,我试图仅在单元格处于视图中时才显示动画,而不是在用户滚动 UITableView 时显示动画。有人有什么建议或想法吗?
谢谢
【问题讨论】:
-
您可以在动画被重用之前取消动画,方法是为您的自定义 UITableViewCell 类在
prepareForReuse内的动画层上调用removeAllAnimations。 -
不幸的是,这不起作用。我仍然看到所有颜色各异的单元格。
-
你是用 Core Animation 还是 UIView 动画做动画?它看起来像
[CABasicAnimation animationForKeyPath:@"backgroundColor"]; ...还是看起来像[UIView animateWithDuration:0.3 animations:^{ /* change color */ }];? -
我正在使用 UIView 动画。
-
你为什么不试试看。我认为您不需要取消 UIView 动画。改变动画属性的值就足够了。
标签: ios uitableview