2015-02-08 28 views
0

我有一個UIButton,我成功地設置了背景圖片。我想在用戶點擊它時更改背景圖片(導航到下一個視圖控制器)。不幸的是,背景不會改變水龍頭。不過,它確實當我點擊並按住按鈕,所以我很困惑。代碼如下所示:UIButton背景圖片在水龍頭上不變

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x_offset, y_offset, width, BUTTON_HEIGHT)]; 
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    button.backgroundColor = [UIColor whiteColor]; 
    UIImage *buttonImage = [[UIImage imageNamed:@"main_button"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)]; 
    UIImage *pressedbuttonImage = [[UIImage imageNamed:@"main_button_pressed"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)]; 
    [button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateHighlighted]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateApplication]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateDisabled]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateReserved]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateSelected]; 
    return button; 

我知道我與UIControlStates過分了,但我想演示,我已經試過所有:)

回答

2

問題是你只是在每個事件發生時改變圖像。當你點擊並按住它時會顯示突出顯示的圖像。當您更改狀態時,它恢復到正常狀態,並顯示圖像(正常的背景圖像)

可以達到所期望的行爲方式有兩種:

1)

在你IBAction,改變正常的按鈕圖像。

- (IBAction)buttonPressed:(UIButton *)button 
{ 
    UIImage *pressedbuttonImage = [[UIImage imageNamed:@"main_button_pressed"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)]; 
    [button setBackgroundImage:pressedbuttonImage forState:UIControlStateNormal]; 
} 

2)

套裝selectedtrue

- (IBAction)buttonPressed:(UIButton *)button 
{ 
    button.selected = YES; 
} 
+0

您的第一種方法奏效 - 儘管我必須爲UIControlEventTouchDown和UIControlEventTouchUpOutside編寫處理程序 - 如果用戶將手指從按鈕上移開,後者將重置圖像。幸運的是,我有一個幫助器方法,它可以構建我的按鈕,所以我不必在處處添加這些代碼行:) – Ger 2015-02-08 22:17:23

1

好問題是,一旦你停止敲擊按鈕,該按鈕的背景圖像將默認爲您爲UIControlStateNormal設置的任何背景圖像。所以你需要做的是當你的按鈕被輕敲時,在選擇按鈕後將UIControlStateNormal背景圖像重置爲你想要的任何圖像。

+0

按鈕highlighted財產你是說這太快了,我看到的變化? – Ger 2015-02-08 21:47:46

+0

您是否找到針對您的問題的解決方案,因爲我現在也遇到同樣的問題。我也認爲它正在快速變化,我們無法看到變化。 – 2017-07-25 20:46:46