[英]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.