我有一个UIButton,当被选中时,触摸时不应改变状态。 默认行为是触摸时它处于UIControlStateHighlighted,这让我很生气。
建议?
答案 0 :(得分:282)
您的按钮必须将buttonType
设置为自定义。
在IB中,您可以取消选中“突出显示调整图像”。
以编程方式,您可以使用theButton.adjustsImageWhenHighlighted = NO;
同样适用于“禁用”状态的选项。
答案 1 :(得分:37)
除了在IB中取消选中“高亮调整图像”的上述答案之外,请确保按钮类型设置为CUSTOM。
答案 2 :(得分:34)
这对你有用:
[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];
第3行就是这里的诀窍......
这对于设置image / backgroundImage
的作用相同答案 3 :(得分:26)
adjustsImageWhenHighlighted = NO;
答案 4 :(得分:21)
button.adjustsImageWhenDisabled = NO;
对于拥有自己的禁用按钮非常有用。
答案 5 :(得分:4)
根据从默认值到按钮突出显示状态的更改,您可以调用几种方法将它们设置为您需要的值。因此,如果图像发生变化,您可以
[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
答案 6 :(得分:3)
好的,这是一个简单的解决方案,如果这适合你,经过一个星期的敲打我的头,最后发生在我身上突然设置突出显示= NO,用于TouchUpInside或TouchDown的IBAction方法的第一行,或者其他作品。对我来说,TouchUpInside很好。
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
答案 7 :(得分:3)
对于Swifty Developer -
yourButton.adjustsImageWhenHighlighted = false
答案 8 :(得分:3)
Swift 3 +
button.adjustsImageWhenHighlighted = false
button.adjustsImageWhenDisabled = false
答案 9 :(得分:2)
只有两件事:
UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;
答案 10 :(得分:2)
答案 11 :(得分:2)
使您的按钮类型 - “自定义” 和取消选中 - 突出显示调整图像和 你完成了。
答案 12 :(得分:-2)
避免将UIButton的换行符设置为剪辑,而是使用标准截断中间