3

我正在检查按钮的图像以获取其状态,如下所示:

if([syncBtn.currentImage isEqual:[UIImage imageNamed:@"playbtn1.png"]])
{
  //Do something if play button
}
else if([syncBtn.currentImage isEqual:[UIImage imageNamed:@"syncbtn1.png"]])
{
  //Do something if sync button
}
else 
{
   //do something when no image on button
}

按钮上总是有一个图像,无论是 syncbtn1.png 还是 playbtn1.png。

上面的检查工作正常,但是当我去后台然后返回前台时,只有它无法从上面的方法检查按钮的当前图像,它处于其他状态。

有什么问题?

4

1 回答 1

2

这是因为您正在比较 UIImage 实例。它们在默认情况下被缓存,因此您大部分时间都会获得相同的实例。但是当应用程序进入后台后,缓存被清除并且你得到一个新的实例,这意味着它不再匹配了。

修复它的两个选项..

使用您当前的方式:

  1. 只创建一次图像实例并将它们保存在一个强大的属性中。
  2. 将这些图像分配给您的按钮,并检查这些实例。

使用按钮状态:

  1. 设置playbtn1.png图像为UIControlStateNormal
  2. 设置syncbtn1.png图像为UIControlStateSelected
  3. 现在只需设置并检查syncBtn.selected- 如果您更改所选标志,图像将自动更改。
于 2012-12-19T15:11:00.663 回答