2012-05-28 37 views

回答

11

假設這是一個標準的UIButton,初始化按鈕時,你可以做到以下幾點:

[btnObj setImage:[UIImage imageNamed:@"imgName.png"] forState:UIControlStateHighlighted]; 

或背景圖片:

[btnObj setBackgroundImage:[UIImage imageNamed:@"imgName.png"] forState:UIControlStateHighlighted]; 
+0

謝謝您的回答 –

+0

隨時歡迎:) –

1

下面兩種方法可以使用 - 了setBackgroundImage: forState: - setImage:forState:檢查UIButton

+0

謝謝您的回答 –

3

首先創建一個按鈕作爲視圖的成員變量控制器。我們稱之爲UIButton* myButton

然後初始化按鈕像這樣,它的圖像設置爲你希望它最初顯示的圖像:使得單擊按鈕時

myButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
[myButton setImage:[UIImage imageNamed:@"OriginalImage"] forState:UIControlStateNormal]; 
[myButton addTarget:self action:@selector(onClickMyButton) forControlEvents:UIControlEventTouchUpInside]; 

第三行有將使它的功能「 onClickMyButton「被調用。所以,那麼你寫的這個功能,這將圖像變爲「NewImage」:

-(void) onClickMyButton 
{ 
    [myButton setImage:[UIImage imageNamed:@"NewImage"] forState:UIControlStateNormal]; 
} 

瞧!問題解決了:)

+1

感謝您的完整的答案! –

+1

唯一的解決方案,我可以開始工作,永久更改按鈕的圖像。故事板解決方案沒有列出所有的SO工作,也沒有隻使用插座和設置差異。圖像突出顯示和選擇狀態。 – user3344977

0

首先在故事板中用「btYesAction」和「btNoAction」爲按鈕創建對象。

現在去viewcontroller.m並粘貼下面的代碼

<pre> 
(IBAction)btYesAction:(id)sender { 
UIButton *button = (UIButton *)sender; 
button.selected = !button.selected; 

[button setImage:[UIImage imageNamed:@"NO1.png"] 
     forState:UIControlStateSelected]; 

0

我這樣做是這樣的:

某處,在我的情況viewDidLoad中。 。 。

if(![[NSUserDefaults standardUserDefaults]boolForKey:@"volume_control"]){ 

     [btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-up" backgroundColor:[UIColor clearColor] iconColor:clrPureBlueTint andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal]; 
    }else{ 
     [btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-off" backgroundColor:[UIColor clearColor] iconColor:[UIColor whiteColor] andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal]; 
    } 

然後在Click事件

- (void)btnVolumeClicked : (UIButton *)sender{ 

if ([[NSUserDefaults standardUserDefaults]boolForKey:@"volume_control"]) { 

    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"volume_control"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

}else{ 

    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"volume_control"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

[self selectedState];} 

在SelectedState方法:

-(void) selectedState{ 

if(![[NSUserDefaults standardUserDefaults]boolForKey:@"volume_control"]){ 

    [btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-up" backgroundColor:[UIColor clearColor] iconColor:clrPureBlueTint andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal]; 

}else{ 
    [btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-off" backgroundColor:[UIColor clearColor] iconColor:[UIColor whiteColor] andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal]; 
}} 

我使用的字體真棒,但你可以簡單地設置按鈕圖像像這樣

[btnVolume setImage:[UIImage imageNamed:@"NO1.png"] 
    forState:UIControlStateSelected]; 
0

Jose Rafael Santiago Jr.'s Answer斯威夫特3

yourButton.setImage(UIImage(named: "imgName"), for: .normal) 

或背景圖片:

yourButton.setBackgroundImage(UIImage(named: "imgName"), for: .normal) 
相關問題