ios - 轻按时更改UIButton的图像

标签 ios objective-c uitableview uibutton uicontrolevents

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

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

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

我希望每次点击都会改变图像。现在,如果他们点击并保持按住不放,它将发生变化,但是一旦按住不放,它将切换回原始图像。

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

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

最佳答案

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;
}

关于ios - 轻按时更改UIButton的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22027866/

相关文章:

ios - 如何快速制作多行表格 View 标题?

ios - 带有自动保存的 UIDocument 何时保存文件

ios - 使用具有图像全分辨率的 bezierpath 屏蔽图像

ios - 如何设置 Xamarin iOS UITableView 重新排序图标颜色

ios - 编码其模型中没有嵌套属性的嵌套对象

ios - 添加第二个 segue 搞砸了位置?

objective-c - 符号 ^ 在 Objective-C 中代表什么?

ios - NSNumber 会自动转换字符串吗?

ios - 注册 UITableViewCell 不工作

Swift tableView 滚动到行为我的 tableview 的内容偏移值提供了错误的值