【发布时间】:2014-06-04 01:00:12
【问题描述】:
当文本属性更改时,我想在自定义UITableViewCell 中为UILabel 设置动画。
我的动画工作正常,除了每次滚动时单元格进入视野时动画都会触发,并且在调用[myTableView reloadData] 时也会触发。
使用简单的东西
if (![myLabel.text isEqualToString:newText]) {
// change myLabel.text with animation here.
}
不起作用。
我明白为什么会这样。
如果我每次都创建一个新单元格,我可以检查myLabel.text 是否有一个字符串,如果有,它是否不同,然后应用更改。但是,有时要显示的单元格太多。
重用单元格时,myLabel.text 几乎总是已经有一个字符串,并且几乎总是与我想要设置的不同。所以上述检查将不起作用。无论如何,它们都会导致动画触发。
我能想到的唯一方法是使用myLabel.text 中的最后一个已知值创建一个数组并进行比较,但这个列表会很大!
我不知道从哪里开始解决这个问题。
我想要的只是myLabel 在text 属性更改时在我的子类UITableViewCell 中做一个小翻转/背景颜色动画。我找到的最接近的解决方案将导致 tableviewcell 中的 all 标签运行动画。
我也不能在给它一个字符串之前检查myLabel.text,因为它总是被重复使用。
我开始觉得这是做不到的。
【问题讨论】:
-
这是
UITableViewCell的子类吗? -
是的。我应该在我的问题中提到这一点吗?
-
是的,应该说清楚。
-
好的,已修复。谢谢。
-
在不知道您到底想看到什么的情况下,很难说您应该做什么。例如,如果您将一个新项目插入到您的数组中(在中间某处),您是否希望该标签下方的所有标签都进行动画处理,因为数据正在移动到新单元格(再往下),或者只为您要添加的单元格?我认为解决方案将只涉及更新更改的单元格(使用 reloadRowsAtIndexPaths),而不是使用 reloadData 更新整个表。
标签: ios objective-c uitableview uiview uilabel