iOS开发:for循环快速创建button等控件的相关内容

      iOS开发过程中,通过for循环快速创建控件,不但可以节省很多时间,而且也方便开发维护。那么下面就来介绍一下关于for循环创建button的方法和相关处理过程。


一、纯代码通过for循环创建button

       通过纯代码创建button,并设置button的点击效果和点击事件,具体操作如下代码所示:

#define Start_X 10.0f           // 第一个按钮的X坐标

#define Start_Y 84.0f           // 第一个按钮的Y坐标

#define Width_Space 5.0f        // 2个按钮之间的横间距

#define Height_Space 20.0f      // 竖间距

#define Button_Height 122.0f    //

#define Button_Width 75.0f      //


@property (strong, nonatomic) UIButton *bgBtn; 


#pragma mark -- for循环创建按钮

- (void)setButton {

    for (int i = 0 ; i < 6; i++) {

        NSInteger index = i % 3;

        NSInteger page = i / 3;

        UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

        btn.frame = CGRectMake(index * (Button_Width + Width_Space) + Start_X, page  * (Button_Height + Height_Space)+Start_Y, Button_Width, Button_Height);

        

//         x = 排数*(+排距)+第一个横坐标;

//         y = 列数*(+列距)+第一个纵坐标;

        

        //tag标记值

        btn.tag = i;

        //文字

        NSMutableArray *arry = [[NSMutableArray alloc]initWithObjects:@“A”,@“B”,@“C”,@“D”,@“E”,@“F”,@“G” ,nil];

        [btn setTitle:arry[i] forState:UIControlStateNormal];

        

        //设置默认选中第一个btn

        if(btn.tag == 0) {

            btn.backgroundColor = [UIColor orangeColor];

            [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

            //定义设置第一个按钮sender是已被选中的

            _bgBtn = btn;

        }else {

            btn.backgroundColor = [UIColor blackColor];

            [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

        }

        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];

        [self.view addSubview:btn];

    }

}


#pragma mark -- 点击事件

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

    //如果点击的按钮和上次点击的按钮是一样的

    if(_bgBtn == sender) {

        //不处理

        

    }else {

        sender.backgroundColor = [UIColor orangeColor];

        [sender setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];


        _bgBtn.backgroundColor = [UIColor blackColor];

        [_bgBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    }

    _bgBtn = sender;

}


二、通过xib创建button,然后用纯代码处理相关逻辑需求

         通过xib创建了多个button,然后在控制器.m里面进行相关的操作,具体操作如下所示:

         1xib里面的操作主要就是创建button,然后添加约束,然后按照顺序给每个button设置tag值,比如tag设置为:1000-1006,然后把所有按钮都拖入到同一个点击事件里面(公用一个点击事件);

         2、控制器.m里面的处理,主要是通过设置一个公用的button接收被点击的按钮,然后在button的点击事件里面做逻辑处理。具体核心如下所示:


@property (strong, nonatomic) UIButton *bgBtn; //公用btn


#pragma mark -- button点击事件  tag1000-1006

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

    if (sender != _bgBtn) {

        //选中的按钮

        sender.layer.borderColor = [UIColor colorWithHexString:@"#54D6C1"].CGColor;

        [sender setTitleColor:[UIColor colorWithHexString:@"#54D6C1"] forState:UIControlStateNormal];

        //未选中的按钮

        _bgBtn.layer.borderColor = [UIColor whiteColor].CGColor;

        [_bgBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];


        _bgBtn = sender;

     }else {

        //未选中默认状态的按钮

        _bgBtn.layer.borderColor = [UIColor whiteColor].CGColor;

        [_bgBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

        _bgBtn = nil;

    }

}

        全部操作如下图所示:





以上就是本节全部内容,欢迎关注三掌柜的微信公众号,欢迎关注!


猜你喜欢

转载自blog.csdn.net/cc1991_/article/details/80325283
今日推荐