use*_*681 155 iphone cocoa-touch image selected uibutton
我为按钮的状态Normal,Highlighted和Selected设置了一个图像,但是当按钮处于选中状态时我按下/突出显示它我没有看到我突出显示的图像而只是灰色的图像.选择按钮时,是否可以将图像设置为高亮显示状态?
我的代码:
[button setImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateHighlighted];
[button setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateSelected];
Run Code Online (Sandbox Code Playgroud)
当我做:
[button setSelected:YES];
Run Code Online (Sandbox Code Playgroud)
并按下按钮,"pressed.png"图像不会选择.
use*_*681 230
我找到了解决方案:需要添加添加行
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateSelected | UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)
Río*_*ire 115
您可以在Interface Builder中执行此操作.
选择UIButton您要设置的IB然后转到attributes inspector.
在屏幕截图,我使用的是自定义按钮类型,但这并没有关系.



kvo*_*the 28
斯威夫特3
// Default state (previously `.Normal`)
button.setImage(UIImage(named: "image1"), for: [])
// Highlighted
button.setImage(UIImage(named: "image2"), for: .highlighted)
// Selected
button.setImage(UIImage(named: "image3"), for: .selected)
// Selected + Highlighted
button.setImage(UIImage(named: "image4"), for: [.selected, .highlighted])
Run Code Online (Sandbox Code Playgroud)
要设置我们可以使用的背景图像 setBackgroundImage(_:for:)
Swift 2.x
// Normal
button.setImage(UIImage(named: "image1"), forState: .Normal)
// Highlighted
button.setImage(UIImage(named: "image2"), forState: .Highlighted)
// Selected
button.setImage(UIImage(named: "image3"), forState: .Selected)
// Selected + Highlighted
button.setImage(UIImage(named: "image4"), forState: [.Selected, .Highlighted])
Run Code Online (Sandbox Code Playgroud)
小智 27
我想这里的大多数海报完全忽略了这一点.我有同样的问题.最初的问题是关于选中按钮(组合两个状态)的突出显示状态,它无法在IB中设置并且在一些变暗的情况下回落到默认状态.只提到工作解决方案作为一个帖子:
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateSelected | UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)
Jor*_*rge 11
如果你有充分的理由这样做,这将成功
添加这些目标:
[button addTarget:self action:@selector(buttonTouchDown:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(buttonTouchUp:) forControlEvents:UIControlEventTouchUpInside];
-(void)buttonTouchDown:(id)sender{
UIButton *button=(UIButton *)sender;
if(button.selected){
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateNormal];
}
}
-(void)buttonTouchUp:(id)sender{
UIButton *button=(UIButton *)sender;
[button setImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
}
Run Code Online (Sandbox Code Playgroud)
在swift中你可以这样做:
button.setImage(UIImage(named: "selected"),
forState: UIControlState.selected.union(.highlighted))
Run Code Online (Sandbox Code Playgroud)
在Swift 3.x中,您可以按以下方式选择按钮时设置高亮显示的图像:
// Normal state
button.setImage(UIImage(named: "normalImage"), for: .normal)
// Highlighted state (before button is selected)
button.setImage(UIImage(named: "pressedImage"), for: .highlighted)
// Selected state
button.setImage(UIImage(named: "selectedImage"), for: .selected)
// Highlighted state (after button is selected)
button.setImage(UIImage(named: "pressedAfterBeingSelectedImage"),
for: UIControlState.selected.union(.highlighted))
Run Code Online (Sandbox Code Playgroud)