NSArray *titles=@[@" 1 ",@" 2 ",@" 3 ",@" 4 ",@" 5 ",@" 6 ",@" 7 ",@" 8 ",@" 9 ",@" 10 "];
CGFloatmarginX =10; //按钮距离左边和右边的距离
CGFloatmarginY =1; //距离上下边缘距离
CGFloatgapX =20; //左右按钮之间的距离
CGFloatgapY =10; //上下按钮之间的距离
NSIntegercol =4; //这里只布局5列
//CGFloat itemWidth = (viewWidth - marginX *2 - (col - 1)*gapX)/col*1.0f; //根据列数 和 按钮之间的间距 这些参数基本可以确定要平铺的按钮的宽度 CGFloat itemHeight = itemWidth; //按钮的高度可以根据情况设定 这里设置为相等
CGFloatitemWidth = (kScreenWidth/1.2 -80) / 4;; //根据列数 和 按钮之间的间距 这些参数基本可以确定要平铺的按钮的宽度
CGFloat itemHeight = 36; //按钮的高度可以根据情况设定 这里设置为相等
UIButton*last =nil; //上一个按钮
//准备工作完毕 既可以开始布局了
for(inti =0; i < titles.count; i++) {
UIButton*item = [selfbuttonCreat];
[itemsetTitle:titles[i] forState:UIControlStateNormal];
[white_ViewaddSubview:item];
self.selectBtn=item;
[itemmas_makeConstraints:^(MASConstraintMaker*make) {
//宽高是固定的,前面已经算好了
make.width.mas_equalTo(itemWidth);
make.height.mas_equalTo(itemHeight);
CGFloattop =60+ marginY + (i/col)*(itemHeight+gapY);
// if (i == 0) {
// //buttonMJ.enabled = NO;
// item.selected=YES;
// self.selectBtn = item;
// //[item setBackgroundColor:[UIColor redColor]];
// // 让按钮内部的label根据文字内容来计算尺寸
// //[button.titleLabel sizeToFit];
// }
make.top.mas_offset(top);
if (!last || (i%col) == 0) { //last为nil 或者(i%col) == 0 说明换行了 每行的第一个确定它距离左边边缘的距离
make.left.mas_offset(marginX);
}else{
//第二个或者后面的按钮 距离前一个按钮右边的距离都是gap个单位
make.left.mas_equalTo(last.mas_right).mas_offset(gapX);
}
}];
last = item;
}
}
#pragma mark - Private
-(UIButton*)buttonCreat{
UIButton*item = [[UIButtonalloc]init];
//item.backgroundColor = [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0f];
item.titleLabel.font = [UIFont systemFontOfSize:16];
[itemsetTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
[itemsetTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
[itemsetBackgroundImage:[UIImage imageNamed:@"btn_nomal"] forState:UIControlStateNormal];
[itemsetBackgroundImage:[UIImage imageNamed:@"navgtionBackVi"] forState:UIControlStateSelected];
[itemaddTarget:self action:@selector(numBtnClick:) forControlEvents:UIControlEventTouchUpInside];
returnitem;
}
- (void)numBtnClick:(UIButton*)sender{
self.selectBtn.selected=NO;
sender.selected=YES;
self.selectBtn= sender;
}
///
-(void)layoutOneLine{
//单行布局 不需要考虑换行的问题
CGFloat marginX = 10; //按钮距离左边和右边的距离 CGFloat marginY = 10; //按钮距离布局顶部的距离 CGFloat toTop = 50; //布局区域距离顶部的距离 CGFloat gap = 10; //按钮与按钮之间的距离 NSInteger col = 5; //这里只布局5列 NSInteger count = 5; //这里先设置布局5个按钮
CGFloat viewWidth = self.view.bounds.size.width; //视图的宽度 CGFloat viewHeight = self.view.bounds.size.height; //视图的高度
CGFloat itemWidth = (viewWidth - marginX *2 - (col - 1)*gap)/col*1.0f; //根据列数 和 按钮之间的间距 这些参数基本可以确定要平铺的按钮的宽度 CGFloat height = itemWidth; //按钮的高度可以根据情况设定 这里设置为相等
UIButton *last = nil; //上一个按钮 //准备工作完毕 既可以开始布局了 for (int i = 0 ; i < count; i++) {
UIButton *item = [self buttonCreat];
[item setTitle:@(i).stringValue forState:UIControlStateNormal];
[self.view addSubview:item];
//布局 [item mas_makeConstraints:^(MASConstraintMaker *make) {
//宽高是固定的,前面已经算好了 make.width.mas_equalTo(itemWidth);
make.height.mas_equalTo(height);
//topTop距离顶部的距离,单行不用考虑太多,多行,还需要计算距离顶部的距离 make.top.mas_offset(toTop+marginY);
if (!last) { //last为nil 说明是第一个按钮 make.left.mas_offset(marginX);
}else{
//第二个或者后面的按钮 距离前一个按钮右边的距离都是gap个单位 make.left.mas_equalTo(last.mas_right).mas_offset(gap);
}
}];
last = item;
}
}