美文网首页ios
iOS 循环创建多个button实现点击改变颜色

iOS 循环创建多个button实现点击改变颜色

作者: 来宝 | 来源:发表于2016-05-07 11:54 被阅读6404次

    工程中需要实现与UISegmentedControl效果相似的一排一共十个button,如下图.但是SegmentedControl修改不太方便,就用button替代,循环创建十个button,点击改变背景色.其他的没被点的button的背景恢复默认.之前也写过,因为button太多,需要各种判断.感觉之前方法的方法比较麻烦. . 第一种方法在创建button的时候,把所有的button存储到可变数组里,在button点击事件里面,拿到之前的可变数组,对里面的每一个button遍历,遍历的时候判断是否是当前点击的button,是的话,就改变背景颜色,否则把置为初始颜色.但是这个方法应该可以优化,遍历的时候数量多的时候,也会出现延迟,所以我又想到了下一个方法.
    _btnMutableArray存储button的可变数组

    - (void)buttonOfAction:(UIButton*)sender{
    
    for (UIButton *btn in _btnMutableArray){
           if (btn.tag ==sender.tag) {
             [sender setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
           } else {
              [sender setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
           }
        }
    }
    

    第二种方法 用UIButton类型的变量存储当前点击的button,判断一下下一次点击的button和上次存储的是不是同一个button,如果是同一个,就不做处理,如果不是就改变当前点击的背景,恢复上一次的背景,

    - (void)buttonOfAction:(UIButton *)sender{
    if(_btn2== sender) {
        //上次点击过的按钮,不做处理
        } else{
          //本次点击的按钮设为红色
          [sender setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
          //将上次点击过的按钮设为黑色
          [_btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        }
        _btn2= sender;
    }
    

    相关文章

      网友评论

        本文标题:iOS 循环创建多个button实现点击改变颜色

        本文链接:https://www.haomeiwen.com/subject/zjajrttx.html