点击时更改UIButton的图像

时间:2014-02-25 22:45:51

标签: ios objective-c uitableview uibutton uicontrolevents

我有一个UIButton,我以编程方式创建并添加到UITableViewCell。

我已经成功设置了它,如果你点击按钮并保持按住它,它将变为我为“突出显示状态”设置的图像,但这还不够好。

当用户点击按钮时,我需要它完全切换到新图像。如果用户再次点击该按钮,我希望它更改回原始图像。

我希望每次点按时图像都会改变。现在它会改变,如果他们点击并继续按住它,但一旦完成按住它就会切换回原始图像。

以下是我到目前为止按钮的代码:

UIImage *addFriendButtonImage = [UIImage imageNamed:@"SliderThumb-Normal-G"];

UIImage *addFriendButtonImageHighlighted = [UIImage imageNamed:@"SliderThumb-Normal"];

UIButton *addFriendButton = [[UIButton alloc]init];

addFriendButton.frame = CGRectMake(237, -10, 64, 64);

[addFriendButton setImage:addFriendButtonImage forState:UIControlStateNormal];

[addFriendButton setImage:addFriendButtonImageHighlighted forState:UIControlStateHighlighted];

我也尝试将新图像的状态设置为“UIControlStateSelected”,但这样做会使原始图像变得更暗。它甚至没有更改为新图像,并且只有在按住按钮时它才会显示它的效果。

3 个答案:

答案 0 :(得分:3)

UIControlStateHighlightedUIControlStateSelected状态设置图片:

[addFriendButton setImage:addFriendButtonImage forState:UIControlStateNormal];
[addFriendButton setImage:addFriendButtonImageHighlighted forState:UIControlStateHighlighted];
[addFriendButton setImage:addFriendButtonImageHighlighted forState:UIControlStateSelected];

然后听UIControlEventTouchUpInside

[addFriendButton addTarget:self action:@selector(handleTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];

然后更新所选状态:

- (void)handleTouchUpInside:(UIButton *)sender {
    sender.selected = !sender.selected;
}

答案 1 :(得分:0)

每当用户点击[addFriendButton setImage:someImage forState:UIControlStateNormal];时,您想要的是使用addFriendButton设置新图片(查找事件UIControlEventTouchUpInside)。

如果您需要,您仍然可以在[addFriendButton setImage:someImage_highlighted forState:UIControlStateHighlighted];

上指定适当的高光图像

答案 2 :(得分:0)

您需要为按钮创建IBAction方法。如果您使用故事板设计视图控制器,请转到助理编辑器中的相应视图控制器(点击Xcode窗口右上角的图标Assistand Editor Icon),然后按CTRL +拖动按钮到视图控制器类的.h文件,如下所示:

CTRL+drag Storyboard

选择Action并输入touchUpInsideButton等方法的命名。

create an action method

重复相同的步骤为按钮创建属性。 (但是请选择Outlet而不是Action,并为您的按钮指定一个名称myButton。)现在您应该在.h文件中包含以下两行:

@property (strong, nonatomic) IBOutlet UIButton *myButton;
- (IBAction)touchUpInsideButton:(id)sender;

现在转到视图控制器的.m文件。搜索新创建的操作方法- (IBAction)touchUpInsideButton:(id)sender并输入以下代码,以便在用户点按按钮时更改按钮的图像:

- (IBAction)touchUpInsideButton:(id)sender {
    UIImage *myImage = [UIImage imageNamed:@"myImageName"];
    [self.myButton setImage:myImage forState:UIControlStateNormal];
}

(只要用户点击按钮,您就可以在此方法中放置任何代码。) 如果您使用的是故事板,我会推荐这种方法。如果没有,请参阅@Corey的回复。