2014-09-02 70 views
0

我已經通過了所有其他有關按鈕顏色變化的問題。這是情況,我有一個按鈕,當按下時導致視圖滑出。在按按鈕的圖像爲白色之前,一旦按下灰色(這是可以接受的),但再次按下以返回到原始位置時,圖像仍爲灰色。我想它回到白色,並嘗試使用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

回答

0

這是完全被忽視的東西。我有不透明度設置。所以:

self.layer.opacity = .60; 

是問題所在。一旦我評論了該線條,該按鈕就像一個魅力。感謝Jim的幫助。

+0

很高興你把它分類。這總是簡單的疏忽似乎引起麻煩。乾杯 – 2014-09-02 21:36:24

1

您顯示的代碼只是聲明哪個圖像的按鈕將取決於不同的狀態,但是您還需要物理更改按鈕的狀態,以便這些圖像可以用於每個狀態。

我的意思是,如果您在顯示按鈕時顯示不同圖像的按鈕被選中,您需要將按鈕狀態更改爲選定狀態。要將圖像返回到原始未選圖像,您需要將狀態更改回未選中狀態。例如,讓我們的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; 
     } 
} 

我希望這可以幫助