按下按钮时更改UIButton图像

时间:2012-10-12 17:55:33

标签: iphone objective-c xcode

我正在尝试在按下按钮的瞬间更改图像按钮。发布后,我想回到原版。

我在这里阅读了一些帖子,但它没有用。

是否可以在没有编程的情况下在GUI中进行?

我试过了:

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

但是我应该将函数toggleUIButtonImage与哪种发件人事件相关联?

由于

4 个答案:

答案 0 :(得分:12)

您可以在界面构建器中通过为每个按钮状态配置提供不同的设置来执行此操作:

The available states are: default, selected and disabled

或者您也可以更改'设置'代码中的按钮使用' UIButton' setImage:forState方法。

    [myButton setImage:highlightedImage forState:UIControlStateHighlighted];

通常,您应该通过配置'来实现。如上所述的按钮而不是通过手动改变按钮的子视图作为对用户交互的响应。它不适合你的原因是UIButton固有的隐藏行为。您手动更改按钮的子视图作为对用户交互的响应,但您的更改将更改回按钮设置中定义的更改(根据按钮的状态)。所以看起来你的代码根本没有做任何事情。

答案 1 :(得分:4)

ViewDidLoad方法

中的

设置

的属性
[[button setImage:[UIImage ImageNamed:@"unselectedImage.png"] forState: UIControlStateNormal]; 
[[button setImage:[UIImage ImageNamed:@"selectedImage.png"] forState: UIControlStateHighlighted ];

答案 2 :(得分:2)

这可以通过Interface Builder完成,无需代码。

在IB中选择您的按钮,转到右侧边栏,将“类型”更改为“自定义”,确保“状态配置”为“默认”,然后在“背景图像”文本字段中键入“常规图像”参考的名称。

然后将State Config更改为Highlighted,并在Background Image文本字段中输入“按下的图像”参考的名称。

答案 3 :(得分:1)

在IB中,您可以为按钮的突出显示(未选定)状态设置图像。应该这样做。

查看“工具”窗格的“按钮”部分,然后从“状态配置”下拉列表中选择“突出显示”。