iOS九宫格

下面我用代码展示一下用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;
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值