簡體   English   中英

輕按切換按鈕的圖像

[英]switch button's image on tap

我有以下代碼

- (IBAction)switchSetting:(UIButton *)sender {
    if([sender.currentImage isEqual:[UIImage imageNamed:@"settings_on"]]){
        [sender setImage:nil forState:UIControlStateNormal];
        //[sender setImage:[UIImage imageNamed:@"settings_off"] forState:UIControlStateHighlighted];
        [sender setTintColor:[UIColor clearColor]];
    }else{
        [sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateNormal];
        //[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateSelected];
        //[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateReserved];
        //[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateHighlighted];
        [sender setTintColor:[UIColor clearColor]];
    }
}

所有按鈕背景圖像均設置為“ settings_off”。 這樣,當我想切換設置時,可以將按鈕圖像設置為“ settings_on”或NIL。

問題是當我運行該應用程序時,將圖像設置為“ settings_on”的按鈕可以正常工作(嗯,一個問題是,我第一次需要單擊兩次以進行切換,但那是次要的),但是沒有圖像集永遠不會切換。 我嘗試設置圖像的各種狀態(選中,突出顯示,正常),當我這樣做時,然后從打開切換到關閉(無)后,它就不會切換回(與被注釋掉相對) 。 我迷路了,任何幫助表示感謝!

編輯:從其backgroundImages清除所有按鈕,並且僅使用“圖像”使其工作; 即使我仍然不明白為什么我最初的方法不起作用。 AFAIK圖像視圖將覆蓋背景視圖...有人知道為什么我必須第一次單擊兩次才能使開關啟動嗎?

您是否嘗試過以下代碼?

- (IBAction)switchSetting:(UIButton *)sender {
if([sender backgroundImageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"settings_off"] ){
    [sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateNormal];
}else{
    [sender setImage:[UIImage imageNamed:@"settings_off"] forState:UIControlStateNormal];
}

您可以使用sender.currentImage檢查UIButton圖像:

- (IBAction)switchSetting:(UIButton *)sender {

if ([sender.currentImage isEqual:[UIImage imageNamed:@"settings_off"]]) 
{
[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateNormal];

}
else
{
[sender setImage:[UIImage imageNamed:@"settings_off"] forState:UIControlStateNormal];


}

}

希望這可以幫助您檢查按鈕當前圖像。

您可以嘗試相應地在按鈕上設置tag值,然后再使用switch語句檢查條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM