天天看點

iOS九宮格

下面我用代碼展示一下用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;
    }
}
           
iOS九宮格
iOS九宮格