1

我有一个 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”,但所有这些都会使原始图像变暗一些。它甚至不会更改为新图像,并且再次仅在您按住按钮时才显示其效果。

4

3 回答 3

3

UIControlStateHighlighted为和UIControlStateSelected状态设置图像:

[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;
}
于 2014-02-25T23:15:42.377 回答
0

您需要IBAction为您的按钮创建一个方法。如果您使用情节提要来设计视图控制器,请转到辅助编辑器中的相应视图控制器(点击辅助编辑器图标Xcode 窗口右上角的图标),CTRL+将 a 线从按钮拖到 .h你的视图控制器类的文件是这样的:

CTRL+拖动故事板

选择Action并输入一个为方法命名的名称,例如touchUpInsideButton.

创建一个动作方法

重复相同的步骤为您的按钮创建一个属性。(但是选择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 的回复。

于 2014-02-25T23:12:05.840 回答
0

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

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

于 2014-02-25T23:06:27.010 回答