1

我想在表格单元格中有一个闪烁的图像(在两个图像之间交换)。

对我来说最自然的情况如下:

  • 将 NSTimer 设置为每 0.5 秒运行一次,调用 -blink:
  • 在 -blink 中:我打开/关闭一个 blinkStatus 变量
  • 在 -cellForRowAtIndexPath: 中,我根据 blinkStatus 设置图像

现在,我还在 -blink: 方法中调用 [myTableView reloadData],因此认为得到更新。

这似乎是有道理的;单元格的状态实际上正在改变(图像正在改变),因此更新表格是有意义的。

这行得通。 但是,reloadData 似乎会干扰用户交互:

在表格编辑模式下,如果用户选择(-)删除,并出现 Delete 按钮,当 reloadData 发生时它会消失。如果 [myTableView.editing] 为假,则仅执行 reloadData 就很容易了。(而且在编辑模式下不闪烁也不是什么大问题。)

然而,reloadData 似乎仍然把事情搞砸了(例如清除单元格选择)。我还担心每 0.5 秒调用一次 reloadData 的效率。

有没有更流畅的方法让图像闪烁?我正在考虑保存指向任何闪烁单元格的指针,并更新计时器中的 .image 属性。但这似乎是个坏主意,因为单元格被重复用于表的不同行(哎哟),我怀疑简单地更新 .image 属性会在没有 reloadData 的情况下更新表。

4

2 回答 2

2

你应该只在方法中切换图像-blink,只要你使用正确的接口(例如cell.imageView.image),图像就会自动更新,无需调用reloadData

于 2013-02-07T14:18:54.797 回答
1

你试过使用[UIImageView animationImages]财产吗?只需提供您的图像,设置所需的持续时间和动画重复计数并调用 startAnimating

于 2013-02-07T14:23:57.867 回答