使用“正常/突出显示”图像创建自定义UIButton

时间:2015-05-22 17:21:32

标签: ios objective-c uibutton uikit

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

的按钮

答案 1 :(得分:0)

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

[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。