在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里面进行相关的操作,具体操作如下所示:
1、xib里面的操作主要就是创建button,然后添加约束,然后按照顺序给每个button设置tag值,比如tag设置为:1000-1006,然后把所有按钮都拖入到同一个点击事件里面(公用一个点击事件);
2、控制器.m里面的处理,主要是通过设置一个公用的button接收被点击的按钮,然后在button的点击事件里面做逻辑处理。具体核心如下所示:
@property (strong, nonatomic) UIButton *bgBtn; //公用btn
#pragma mark -- button点击事件 tag:1000-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;
}
}
全部操作如下图所示:
以上就是本节全部内容,欢迎关注三掌柜的微信公众号,欢迎关注!