下面我用代码展示一下用for循环实现九宫格布局:
-(void)creatButton{
//九宫格布局
self.buttonArry=@[@"校园通知",@"校园风采",@"沟通",@"考勤记录",@"请假系统",@"荣誉系统",@"服务"];
UIView *view=[[UIView alloc]initWithFrame:CGRectMake(0, ScreenHeight/4, ScreenWidth, ScreenHeight-ScreenHeight/4-64-49)];
[self.view addSubview:view];
CGFloat buttonw =58;
//横向个数
int totalloc=4;
//纵向个数
int vertical = 2;
//横向的间隔
CGFloat wSpace = (ScreenWidth - totalloc*buttonw)/(totalloc+1);
//纵向的间隔
CGFloat hSpace = (view.frame.size.height - vertical*buttonw)/(vertical+3);
for (int i = 0; i<self.buttonArry.count; i++) {
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.tag = 101+i;
NSString *imageStr=[NSString stringWithFormat:@"button%d",i+1];
[btn setImage:[UIImage imageNamed:imageStr] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:imageStr] forState:UIControlStateHighlighted];
[btn addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
//九宫格坐标的小算法:(横坐标:i%横向显示个数的最大值;纵坐标:i/纵向的个数的最大值)
[btn setFrame:CGRectMake(wSpace +(i%totalloc)*(buttonw+wSpace),hSpace-10+(i/totalloc)*(hSpace+buttonw), buttonw,buttonw)];
[view addSubview:btn];
//创建label
UILabel *label = [Factory creatLabelWithFrame:CGRectMake(wSpace+(i%totalloc)*(buttonw+wSpace),hSpace+buttonw-10 + (i/totalloc)*(hSpace+buttonw), buttonw, 20) text:self.buttonArry[i]];
label.font = [UIFont systemFontOfSize:13];
label.textAlignment = NSTextAlignmentCenter;
[view addSubview:label];
}
}
-(void)buttonClick:(UIButton *)button{
switch (button.tag) {
case 101:
NSLog(@"button%ld",button.tag);
break;
case 102:
NSLog(@"button%ld",button.tag);
break;
case 103:
NSLog(@"button%ld",button.tag);
break;
case 104:
NSLog(@"button%ld",button.tag);
break;
case 105:
NSLog(@"button%ld",button.tag);
break;
case 106:
NSLog(@"button%ld",button.tag);
break;
case 107:
NSLog(@"button%ld",button.tag);
break;
default:
break;
}
}