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

36 iphone objective-c

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

btnthumbnail2 setImage:[UIImage imageNamed:@"leaderboard_ov.png"] forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

然后我改变了观点.

图像正在改变但不显示已更改的图像.我认为控件进入下一个视图,这就是它发生的原因.但我想表明改变,我该怎么做?Plz帮我这个..

Nic*_*oft 98

我正在使用Interface Builder,我在其中添加了一个UIButton视图.

  1. 我定义的按钮选择默认并选择我的形象,为选定的状态(使用下拉列表中的Inspector窗口选择" 选中状态配置选择前映像").

  2. IBAction在控制器中创建一个并将按钮连接到该操作.

  3. 然后看下面的代码:

  -(IBAction) toggleUIButtonImage:(id)sender{
      if ([sender isSelected]) {
         [sender setImage:unselectedImage forState:UIControlStateNormal];
         [sender setSelected:NO];
      } else {
         [sender setImage:selectedImage forState:UIControlStateSelected];
         [sender setSelected:YES];
      }
  } 
Run Code Online (Sandbox Code Playgroud)

我认为这是一个非常顺利的解决方案.希望能帮助到你!

  • 无需在每次切换方法中重新设置图像. (11认同)

Anj*_*aan 22

这是我做的最简单的方式,每次都有效

-(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
   }
}
Run Code Online (Sandbox Code Playgroud)

您可以对其他状态使用其他类似检查,例如SELECTED,ENABLED,HIGHLIGHTED.


zpa*_*ack 11

你在那里的代码应该可以正常工作,但我猜测按钮图像在下一次运行事件循环之前不会显示更改,所以在视图切换之前你没有看到它.

这是一种黑客攻击,但您可以尝试稍微延迟视图更改,以便按钮更新.

所以不是这样的:

[btnthumbnail2 setImage:[UIImage imageNamed:@"leaderboard_ov.png"] forState:UIControlStateNormal];
[self showMyOtherView];
Run Code Online (Sandbox Code Playgroud)

试试这个:

[btnthumbnail2 setImage:[UIImage imageNamed:@"leaderboard_ov.png"] forState:UIControlStateNormal];
[self performSelector:@selector(showMyOtherView) withObject:self afterDelay:0.01];
Run Code Online (Sandbox Code Playgroud)


Ram*_*min 5

要更改所选状态的图像,您必须调用setImage状态UIControlStateSelected.您可以为不同的状态设置单独的图像(正常,突出显示,禁用,选定等).


小智 5

如果您想在单击按钮时更改图像,这种方式非常有效:

-(IBAction)buttonClicked: (id)sender
{   
  UIButton *buttonObj = (UIButton*)sender;
  [buttonObj setBackgroundImage:[UIImage imageNamed:@"myImage.png"]   
  forState:UIControlStateNormal];
}
Run Code Online (Sandbox Code Playgroud)