2011-08-21 126 views
1

嗨我想在按下按鈕後更改我的按鈕的背景,即按鈕不應該變回到先前的圖像。如何設置UIControlStateSelected的按鈕圖像

但是,我無法這樣做。我的代碼如下。任何人都可以建議我點擊按鈕後如何將圖像更改爲「custom_button_highlight」?

UIImage *buttonImageNormal = [UIImage imageNamed:@"custom_button"]; 
UIImage *stretchableButtonImageNormal = [buttonImageNormal 
             stretchableImageWithLeftCapWidth:12 topCapHeight:0]; 

UIImage *buttonImagePressed = [UIImage imageNamed:@"custom_button_highlight"]; 
UIImage *stretchableButtonImagePressed = [buttonImagePressed 
              stretchableImageWithLeftCapWidth:12 topCapHeight:0]; 

button.titleLabel.font = [UIFont boldSystemFontOfSize:14]; 
[button setBackgroundImage:stretchableButtonImageNormal 
        forState:UIControlStateNormal]; 

[button setBackgroundImage:stretchableButtonImagePressed 
        forState:UIControlStateHighlighted]; 

[button setBackgroundImage:stretchableButtonImagePressed 
        forState:UIControlStateSelected]; 

回答

1

您提到過,您不希望圖片變回... 然後,您不必爲突出顯示或選擇的狀態設置圖片,將其設置爲UIControlStateNormal狀態。

但是由於您在按下按鈕後需要它,您必須捕獲按鈕已被按下的事件並將背景圖像設置在那裏。

希望它幫助;)

6

方法一

我看到你使用代碼來生成UIButton。使用Interface Builder更容易。試試這個 - 在界面構建器(Xcode4)中,創建按鈕&打開右側邊欄。之後,選擇按鈕,&按鈕的類型爲custom。之後,在state config中,有各種狀態,對於每種狀態,您可以在image中設置圖像。希望這有助於...

enter image description here

方法2

如果你想使用代碼來生成UIButton(被它打敗了我爲什麼),那麼你似乎在做正確的事情。你確定圖像在你的包中嗎?您沒有包含圖片擴展名(例如.jpg等)

+0

這很棒,很簡單!謝謝! – Jean

+0

Awasome斯里卡:) –

+0

@SharmaVishal謝謝!如果您發現我的回答有幫助,請投票。 –

0
[_buttonConfirm setImage:[UIImage imageNamed:@"s.png"] forState:UIControlStateSelected ]; 

...你想要做什麼編程,而不是背景圖像。但是我認爲,如果可以的話,你應該遵循斯里卡爾的回答並使用接口生成器。