UIButton图像在灰色按下

问题描述:

我已经通过了所有其他有关按钮颜色变化的问题。这是情况,我有一个按钮,当按下时导致视图滑出。在按按钮的图像为白色之前,一旦按下灰色(这是可以接受的),但再次按下以返回到原始位置时,图像仍为灰色。我想它回到白色,并尝试使用UIControlStateNormal,禁用等没有成功。UIButton图像在灰色按下

[self.button setImage:[UIImage imageNamed:@"someImage"] forState:UIControlStateNormal]; 

这已更改为所有UIControl类型。目前它被设置为:

[self.menu setImage:[UIImage imageNamed:@"menu"] forState:UIControlStateNormal]; 
[self.menu setImage:[UIImage imageNamed:@"menu"] forState:UIControlStateSelected | UIControlStateHighlighted]; 

仍然没有运气。有什么建议么?

+0

白色图像是您命名为@“someImage”的图像,灰色图像是名为@“menu”的图像?你可以在按钮按下时在IBAction方法中显示代码吗? – 2014-09-02 21:13:23

这是完全被忽视的东西。我有不透明度设置。所以:

self.layer.opacity = .60; 

是问题所在。一旦我评论了该线条,该按钮就像一个魅力。感谢Jim的帮助。

+0

很高兴你把它分类。这总是简单的疏忽似乎引起麻烦。干杯 – 2014-09-02 21:36:24

您显示的代码只是声明哪个图像的按钮将取决于不同的状态,但是您还需要物理更改按钮的状态,以便这些图像可以用于每个状态。

我的意思是,如果您在显示按钮时显示不同图像的按钮被选中,您需要将按钮状态更改为选定状态。要将图像返回到原始未选图像,您需要将状态更改回未选中状态。例如,让我们的viewDidLoad方法中假设你有下面的代码申报图像的每个按钮状态:

//Set for normal state 
[self.button setImage:[UIImage imageNamed:@"normalImage.png"] forState:UIControlStateNormal]; 

//Set for selected state 
[self.button setImage:[UIImage imageNamed:@"selctedImage.png"] forState:UIControlStateSelected]; 

现在你IBAction为方法中,你可以在状态间切换

-(IBAction*)yourButtonIsPressed:(id)sender{ 

     if (!self.button.selected){ //This is checking button state 

     //The code will run in here if the button is in a normal, unselected state. This is where you have you method here to slide in view etc 

     //Now change the button to a selected state 
     self.button.selected = YES; 

     }else{ 
     //The code will now run in here if the button is already in a selected state and this is where you place your method to return the view etc 

     //Now set the button back to an unselected state 
     self.button.selected = NO; 
     } 
} 

我希望这可以帮助