使用普通/高亮图像创建自定义 UIButton

Posted

技术标签:

【中文标题】使用普通/高亮图像创建自定义 UIButton【英文标题】:Creating a Custom UIButton with a Normal/Highlighted image 【发布时间】:2015-05-22 17:21:31 【问题描述】:

我正在尝试制作一个按钮,该按钮可以在突出显示或不突出显示时切换图像。但是下面的代码不会切换图像,甚至不会调用选定的方法..

UIButton *shootButton = [UIButton buttonWithType:UIButtonTypeCustom];
[shootButton setImage:[UIImage imageNamed:@"Button_Normal"] forState:UIControlStateNormal];
[shootButton setImage:[UIImage imageNamed:@"Button_Highlighted"] forState:UIControlStateHighlighted];
shootButton.frame = CGRectMake(0, 0, 80, 80);
[shootButton addTarget:self action:@selector(shoot) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:shootButton];

我做错了什么?我正在查看类似的答案,它告诉我我做得对..

【问题讨论】:

【参考方案1】:

我假设您绝对确定图像名称是正确的并且在您的项目中。

如果您使用[self addSubview],则必须将按钮添加为UIView 的子类。不确定您添加按钮的方法是什么,但它可能不是正确的方法。相反,请尝试在包含UIViewUIViewController 中添加viewDidLoadviewWillAppear 中的按钮

【讨论】:

问题是我在 UIView 的 initWithFrame 方法中加载按钮。谢谢。【参考方案2】:

添加这些以检测按钮的状态:

[self.botonSeguir addTarget:self action:@selector(setBgColorForButton:) forControlEvents:UIControlEventTouchDown];
[self.botonSeguir addTarget:self action:@selector(clearBgColorForButton:) forControlEvents:UIControlEventTouchDragExit];
[self.botonSeguir addTarget:self action:@selector(setBgColorForButton:) forControlEvents:UIControlEventTouchDragEnter];

第一个检测到何时按下按钮(尚未松开手指)

第二个检测到您仍在触摸屏幕按钮时将手指移开按钮

如果在第二个之后你回到按钮,第三个就会触发。

然后创建方法setBgColorForButton、clearBgColorForButton和setBgColorForButton。

【讨论】:

还有更多的事件,显然,这些是我已经编码的。试试UIControlEventTouchUpInsideUIControlEventTouchDown

以上是关于使用普通/高亮图像创建自定义 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

UIButton自定义视网膜图像在iPad Retina Display中伸展

在 iPad Retina Display 中拉伸的 UIButton 自定义视网膜图像

如何为数组中的每个创建一个具有唯一图像和选择器的自定义 UIButton?

带有圆形图像视图的自定义圆形 UIButton

自定义 UIButton 不会更改其图像

如何动态更改自定义 UIButton 图像