首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当用户在iPhone上按下该按钮时更改UIButton上的图像

当用户在iPhone上按下该按钮时更改UIButton上的图像
EN

Stack Overflow用户
提问于 2009-07-02 05:48:18
回答 9查看 88.8K关注 0票数 37

当用户按下该按钮时,我想更改UIButton上的图像。所以,我写了

代码语言:javascript
代码运行次数:0
运行
复制
btnthumbnail2 setImage:[UIImage imageNamed:@"leaderboard_ov.png"] forState:UIControlStateNormal];

在那之后我改变了看法。

图像正在改变,但没有显示改变后的图像。我认为控制转到下一个视图,这就是为什么会发生这种情况。但是我想展示一下变化,我该怎么做呢?请帮帮我..

EN

回答 9

Stack Overflow用户

发布于 2009-12-11 05:01:34

我使用的是Interface Builder,其中我向视图添加了一个UIButton

  1. 我定义了默认选择的按钮,并为选择的状态选择了我的图像(在选择图像之前,使用检查器窗口中的下拉列表选择"Selected state Configuration“)。
  2. 在控制器中创建一个IBAction,并将该按钮连接到该操作。
  3. 然后查看以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
  -(IBAction) toggleUIButtonImage:(id)sender{
      if ([sender isSelected]) {
         [sender setImage:unselectedImage forState:UIControlStateNormal];
         [sender setSelected:NO];
      } else {
         [sender setImage:selectedImage forState:UIControlStateSelected];
         [sender setSelected:YES];
      }
  } 

我认为这是一个相当顺利的解决方案。希望它能帮上忙!

票数 98
EN

Stack Overflow用户

发布于 2012-12-01 17:12:04

这是我正在做的最简单的方法,而且每次都有效。

代码语言:javascript
代码运行次数:0
运行
复制
-(void)buttonTouched:(id)sender
{
 UIButton *btn = (UIButton *)sender;

 if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"icon-Locked.png"]])
    {
       [btn setImage:[UIImage imageNamed:@"icon-Unlocked.png"] forState:UIControlStateNormal];
       // other statements
    }
 else
   {
       [btn setImage:[UIImage imageNamed:@"icon-Locked.png"] forState:UIControlStateNormal];
       // other statements
   }
}

您可以对其他状态使用其他类似的检查,例如选中、启用、突出显示。

票数 22
EN

Stack Overflow用户

发布于 2009-07-02 07:39:16

这里的代码应该工作得很好,但我猜直到下一次运行事件循环时按钮图像才会发生变化,所以在视图切换之前看不到它。

这是一种技巧,但您可以尝试稍微延迟视图更改,这样按钮就会更新。

因此,不是这样:

代码语言:javascript
代码运行次数:0
运行
复制
[btnthumbnail2 setImage:[UIImage imageNamed:@"leaderboard_ov.png"] forState:UIControlStateNormal];
[self showMyOtherView];

试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
[btnthumbnail2 setImage:[UIImage imageNamed:@"leaderboard_ov.png"] forState:UIControlStateNormal];
[self performSelector:@selector(showMyOtherView) withObject:self afterDelay:0.01];
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1072698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档