14

当我当时触摸按钮时,我想更改图像,当我释放触摸按钮时,图像原样。

我想应用下面的代码,但这不是我的期望。

请给我任何建议......

   -(IBAction)actionEnter:(id)sender{
            if ([sender isSelected]) {
                [sender setImage:[UIImage imageNamed:@"enter-hover.png"] 
                        forState:UIControlStateNormal];
                [sender setSelected:NO];
            } else {
                [sender setImage:[UIImage imageNamed:@"enter.png"] 
                        forState:UIControlStateSelected];
                [sender setSelected:YES];
            }
4

6 回答 6

14

您可以为此使用 UIControlStateHighlighted。

[myButton setImage:[UIImage imageNamed:@"enter-hover.png"]
          forState:UIControlStateHighlighted];

您还可以通过将图像设置为突出显示状态来从界面生成器中进行设置。

于 2011-04-18T06:47:43.170 回答
6

我认为应该这样做。创建按钮后设置图像

[yourButton setImage:[UIImage imageNamed:@"enter-hover.png"] 
            forState:UIControlStateSelected];
[yourButton setImage:[UIImage imageNamed:@"enter.png"]  
            forState:UIControlStateNormal];

并这样做

- (IBAction)actionEnter:(id)sender{
    UIButton *button = (UIButton *)sender;
    button.selected = !button.selected;
}
于 2011-04-18T06:51:11.873 回答
2

在斯威夫特:

button.setImage(UIImage(named: "enter.png"), forState: [.Selected, .Highlighted])

于 2016-06-20T20:04:40.487 回答
1

我认为,您可以在开始时将图像设置为正常和选定状态..

UIButton创建对象时尝试以下操作。[根据您的要求使用图像]

[myButton setImage:[UIImage imageNamed:@"enter.png"] 
          forState:UIControlStateNormal];
[myButton setImage:[UIImage imageNamed:@"enter-hover.png"] 
          forState:UIControlStateSelected];
于 2011-04-18T06:48:03.383 回答
0

@7KV7 让我思考。我有最喜欢和忽略的按钮,我想用它们来标记最喜欢的图片和我再也不想看到的图片。我使用他的方法来初始化按钮,然后稍微修改他的方法来打开和关闭按钮。

在此示例中,如果您将图片标记为收藏,您希望关闭忽略按钮,反之亦然。委托处理数据库的东西。

 self.favoriteButton = [UIButton buttonWithType:UIButtonTypeCustom];
        self.ignoreButton   = [UIButton buttonWithType:UIButtonTypeCustom];

        [self.favoriteButton setImage:[UIImage imageNamed:@"Favorite-Selected"] 
                             forState:UIControlStateSelected];
        [self.favoriteButton setImage:[UIImage imageNamed:@"Favorite"] 
                             forState:UIControlStateNormal];

        [self.ignoreButton setImage:[UIImage imageNamed:@"Ignore-Selected"] 
                           forState:UIControlStateSelected];
        [self.ignoreButton setImage:[UIImage imageNamed:@"Ignore"] 
                           forState:UIControlStateNormal];

如果您只是打开或关闭按钮,则不需要将其设为属性,因为 buttonPressed 发送者知道哪个按钮已被按下。我需要让它们成为财产,因为我需要告诉对面的按钮关闭其突出显示。

- (void)favoriteIgnore:(UIButton *)buttonPressed {

     // Toggle the tapped button
     buttonPressed.selected = ( buttonPressed.selected) ?  NO : YES;

    id <ScoringToolbarDelegate> TB_delegate = _delegate;

    // Turn off the other button and call the delegate
    if ([buttonPressed.currentTitle isEqualToString:@"favorite"]) {

        self.ignoreButton.selected = NO;
        [TB_delegate favoriteButtonPressed];

    } else {

        self.favoriteButton.selected = NO;
        [TB_delegate ignoreButtonPressed];
    }
}
于 2013-12-03T03:27:49.007 回答
-1

要立即更改图像,请使用 backgroundImage 属性。

于 2011-04-18T06:51:58.673 回答