zoukankan      html  css  js  c++  java
  • iOS 创建多个button实现点击改变背景颜色

    工程中需要实现与UISegmentedControl效果相似的一排一共十个button,如下图.但是SegmentedControl修改不太方便,就用button替代,

    循环创建十个button,点击改变背景色.其他的没被点的button的背景恢复默认.之前也写过,因为button太多,需要各种判断.感觉之前方法的方法比较麻烦.
    .iOS <wbr>创建多个button实现点击改变背景颜色

    第一种方法

    在创建button的时候,把所有的button存储到可变数组里,在button点击事件里面,拿到之前的可变数组,对里面的每一个button遍历,遍历的时候判断是否是当前点击的button,是的话,就改变背景颜色,否则把置为初始颜色.但是这个方法应该可以优化,遍历的时候数量多的时候,也会出现延迟,所以我又想到了下一个方法.
    //_btnMutableArray 存储button的可变数组

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

    for (UIButton *btn in _btnMutableArray) {

            if (btn.tag == sender.tag) {

                btn.backgroundColor = [UIColor grayColor];

            } else {

                btn.backgroundColor = [UIColor redColor];

            }

        }

    }

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

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

    if (_btn2 == sender) {

        //不做处理

        } else {

            sender.backgroundColor = [UIColor grayColor];

            _btn2.backgroundColor = [UIColor redColor];

        }

        _btn2 = sender;

     

    }

    暂时只想到这两个方法,希望iOS <wbr>创建多个button实现点击改变背景颜色你有好的方法,可以和你学习.

  • 相关阅读:
    unordered_map(hash_map)和map的比较
    软工实践第三次作业-结对项目2
    福大软工1816 · 第四次作业
    学习进度条
    软工实践第三次作业-结对项目1
    软工实践-个人项目
    hightopo学习之旅一 -- 节点动画
    vue中动态样式不起作用? scoped了解一下
    Error: Cannot find module 'webpack/schemas/WebpackOptions.json' 问题解决
    - configuration.module has an unknown property 'loader' 问题解决
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/8867080.html
Copyright © 2011-2022 走看看