iOS多個(gè)復(fù)選框的選中、取消的效果

一你画、效果gif

效果1.gif
效果2.gif

二抵碟、代碼的實(shí)現(xiàn)

自己思路1:為每個(gè)按鈕添加點(diǎn)擊事件桃漾,根據(jù)屬性button.selecteds。這個(gè)方法簡(jiǎn)單方便
自己思路2:實(shí)現(xiàn)多個(gè)復(fù)選框的選擇與取消的效果拟逮。首先需要為每一個(gè)按鈕添加一個(gè)屬性,用來(lái)記錄按鈕實(shí)時(shí)處于的狀態(tài)(選中還是撬统、未選中的狀態(tài)),然后根據(jù)按鈕的狀態(tài)來(lái)對(duì)按鈕進(jìn)行操作敦迄。這個(gè)方法想對(duì)來(lái)說(shuō)較復(fù)雜

2.1思路1(操作屬性button.selected)效果1

//按鈕1
UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
btn.frame = CGRectMake(100, 100, 100, 100);
btn.backgroundColor = [UIColor redColor];
[btn setTitle:@"666666" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(changeBackground:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];

//按鈕2
UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeSystem];
btn1.frame = CGRectMake(200, 200, 100, 100);
btn1.backgroundColor = [UIColor redColor];
[btn1 setTitle:@"888888" forState:UIControlStateNormal];
[btn1 addTarget:self action:@selector(changeBackground:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1];

//重點(diǎn)來(lái)了,操作屬性的設(shè)置
- (void)changeBackground:(UIButton *)btn{
    btn.selected = !btn.selected;
    if (btn.selected) {
        btn.backgroundColor = [UIColor yellowColor];
    }else{
        btn.backgroundColor = [UIColor redColor];
    }

}

2.1思路2(通過(guò)運(yùn)行時(shí)為按鈕添加屬性)效果2

UIButton+SelectStateBtn.h
  #import <UIKit/UIKit.h>
  @interface UIButton (SelectStateBtn)
//為UIButton添加屬性值selectStateBtn恋追,來(lái)記錄按鈕的狀態(tài)
  @property NSString *selectStateBtn;
  - (void)setSelectStateBtn:(NSString *)selectStateBtn;
  - (NSString *)selectStateBtn;
  @end

UIButton+SelectStateBtn.m
#import "UIButton+SelectStateBtn.h"
#import <objc/runtime.h>
static void *tagKey = &tagKey;
@implementation UIButton (SelectStateBtn)
- (void)setSelectStateBtn:(NSString *)selectStateBtn{
     objc_setAssociatedObject(self, tagKey, selectStateBtn, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
- (NSString *)selectStateBtn{
    return objc_getAssociatedObject(self, tagKey);
}
@end

開始使用的地方

//添加button
    for (int i = 0; i < 9; i ++) {
        NSInteger line = i/3;//行號(hào)
        NSInteger row = i%3;//列號(hào)
        NSInteger space = (KWidth-3*100)/4;
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        btn.frame = CGRectMake(row*(space+100)+space, line*(space+30)+120, 100, 30);
        [btn setTitle:[NSString stringWithFormat:@"市場(chǎng)%d",i] forState:UIControlStateNormal];
        btn.titleLabel.font = [UIFont systemFontOfSize:12];
        btn.layer.borderWidth = 0.5f;
        btn.layer.borderColor = [[UIColor grayColor] CGColor];
        [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(add:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:btn];  
}


//多個(gè)復(fù)選框的選中方法
- (void)add:(UIButton *)btn{
    if ([btn.selectStateBtn isEqualToString:@"1"] &&btn.selectStateBtn.length != 0) {
        btn.backgroundColor = [UIColor whiteColor];
        //用字符串0代表已經(jīng)選中的狀態(tài)
         btn.selectStateBtn = @"0";
    }else{
      btn.backgroundColor = [UIColor yellowColor];
        //用字符串1代表已經(jīng)選中的狀態(tài)
        btn.selectStateBtn = @"1";
}  

}

文章已經(jīng)寫完了,歡迎大家批評(píng)指正罚屋。我這邊改變的只是背景 圖片苦囱,最好的方式:美工那邊提供二張照片,選中狀態(tài)下和為選中的狀態(tài)下的圖片脾猛。這樣效果最好撕彤,我這里只是做個(gè)測(cè)試。猛拴。有什么問(wèn)題:請(qǐng)聯(lián)系我的QQ:1312940166. star star star

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末羹铅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子愉昆,更是在濱河造成了極大的恐慌职员,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跛溉,死亡現(xiàn)場(chǎng)離奇詭異焊切,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)倒谷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蛛蒙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人渤愁,你說(shuō)我怎么就攤上這事牵祟。” “怎么了抖格?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵诺苹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我雹拄,道長(zhǎng)收奔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任滓玖,我火速辦了婚禮坪哄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己翩肌,他們只是感情好模暗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著念祭,像睡著了一般兑宇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粱坤,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天隶糕,我揣著相機(jī)與錄音,去河邊找鬼站玄。 笑死枚驻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜒什。 我是一名探鬼主播测秸,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼疤估,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼灾常!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起铃拇,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钞瀑,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后慷荔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雕什,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年显晶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贷岸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磷雇,死狀恐怖偿警,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唯笙,我是刑警寧澤螟蒸,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站崩掘,受9級(jí)特大地震影響七嫌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苞慢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一诵原、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦绍赛、人聲如沸鞋拟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贺纲。三九已至,卻和暖如春褪测,著一層夾襖步出監(jiān)牢的瞬間猴誊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工侮措, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懈叹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓分扎,卻偏偏與公主長(zhǎng)得像澄成,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子畏吓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容