下面我用代碼展示一下用for循環實作九宮格布局:
-(void)creatButton{
//九宮格布局
self.b[email protected][@"校園通知",@"校園風采",@"溝通",@"考勤記錄",@"請假系統",@"榮譽系統",@"服務"];
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;
}
}