从背景切换到前景时,UIButton currentimage不返回图像?

时间:2012-12-19 15:03:44

标签: iphone objective-c uibutton

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

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。

以上检查工作正常,但是当我去backgroud&然后返回到前景然后只有它无法从上面的方法检查按钮的当前图像,它进入其他条件。

可能出现什么问题?

1 个答案:

答案 0 :(得分:2)

这是因为您正在比较UIImage实例。它们默认是缓存的,因此大多数时候都会获得相同的实例。但是在应用程序到达后台后,缓存将被清除,并且您将获得一个新实例,这意味着它不再匹配。

修复它的两个选项..

使用您当前的方式:

  1. 仅创建一次图像实例并将其保存在强大的属性中。
  2. 将这些图像分配给按钮,并检查这些实例。
  3. 使用按钮状态:

    1. 设置playbtn1.png
    2. UIControlStateNormal图片
    3. 设置syncbtn1.png
    4. UIControlStateSelected图片
    5. 现在只需设置并检查syncBtn.selected - 如果您更改所选标记,图像将自动更改。