Answers:
您的按钮必须将其buttonType
设置为“自定义”。
在IB中,您可以取消选中“突出显示调整图像”。
您可以以编程方式使用 theButton.adjustsImageWhenHighlighted = NO;
类似的选项也可用于“禁用”状态。
除了以上在IB中取消选中“突出显示调整图像”的答案外,请确保将按钮类型设置为CUSTOM。
这将为您工作:
[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];
第三行是这里的把戏...
设置图像/ backgroundImage的工作原理相同
adjustsImageWhenHighlighted
属性UIButton
似乎仅影响背景图片。
根据按钮从默认状态到突出显示状态的变化,可以调用两种方法将其设置为所需的状态。因此,如果图像发生变化,您可以执行
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
如果文字更改,您可以
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
其他类似功能:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
好了,如果这对您有用,那么这是一个简单的解决方案,经过一个星期的努力,终于让我想到,只需为TouchUpInside或TouchDown的IBAction方法的第一行设置Highlighted = NO,或其他可行的方法即可。对我来说,在TouchUpInside上还不错。
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}