我想为 UILabel
制作动画在自定义UITableViewCell
当文本属性发生变化时。
我的动画工作正常,除了每次滚动时单元格进入 View 时动画都会触发,并且在调用 [myTableView reloadData]
时也会触发。 .
使用简单的东西
if (![myLabel.text isEqualToString:newText]) {
// change myLabel.text with animation here.
}
不工作。
我明白为什么会这样。
如果我每次都创建一个新单元格,我可以检查
myLabel.text
有一个字符串,如果有,是否不同,然后应用更改。但是,有时要显示的单元格太多。重用单元格时,
myLabel.text
几乎总是已经有一个字符串,并且几乎总是与我想要设置的不同。所以上述检查将不起作用。无论如何,它们都会导致动画触发。我能想到的唯一方法是使用
myLabel.text
中的最后一个已知值创建一个数组。并进行比较,但这个列表会很大!我不知道从哪里开始解决这个问题。
我想要的只是
myLabel
在我的子类 UITableViewCell
中做一个小翻转/backgroundColor 动画当text
属性变化。我找到的最接近的解决方案将导致 tableviewcell 中的所有标签运行动画。我也查不到
myLabel.text
在给它一个字符串之前,因为它总是被重用。我开始觉得这是做不到的。
最佳答案
如果您已将 UITableViewCell
子类化,您可以覆盖默认值 prepareForReuse
方法。在此方法中,将标签的文本属性设置为 nil
.
- (void)prepareForReuse {
[super prepareForReuse];
myLabel.text = nil;
}
现在:
if (myLabel.text && ![myLabel.text isEqualToString:newText]) {
// change myLabel.text with animation here.
}
现在,只有在将文本从一个文本更改为新文本时,该文本才应该具有动画效果。
prepareForReuse
由 tableview 的 dequeueReusableCell
在单元格上调用方法。
关于ios - 在 UITableViewCell 内动画 UILabel 文本更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24027373/