看一下上面这图片,里边的按钮都是用for循环创建的,它们每一组都是居中对其,但是仔细观察的你又会发现每组又整体向左挪了一个像素,那是因为我计算的时候没吧layer描边的大小加上,所以,还是可以的啦。以下插代码解释:
//-----------------------------------------------------记录X起点数组-----------------------------------------------------
//这个数组存的是TagModel型数据,而TagModel里边存的是
@property (strong, nonatomic) NSArray *tagArray;
//创建可变数组存储每一组的x起点
NSMutableArray *tempArray = [NSMutableArray array];
//记录每一组的字节数,通过字节数计算每组的起点
NSInteger tempInt = 0;
//循环遍历
for (NSInteger i = 0; i<_tagArray.count; i++) {
if (i%3 == 0 && i != 0 ) { //当到达下一组,记录当前组的起点位置,并字节数清零,刚开始时不算
//当前组的起点 =(屏幕宽度 - 当前组组长)/2
//当前组组长 = 字节数*10 + 每个按钮前后宽度*3个按钮 + 按钮几之间的空隙*2
tempInt = (kScreenWidth - (tempInt*11+50*3+20*2))/2;
[tempArray addObject:[NSString stringWithFormat:@"%ld", tempInt]];
tempInt = 0;
}
//因为tagArray数组中存的是TagModel
TagModel *tagModel = _tagArray[i];
//当前组字节数
tempInt += tagModel.name.length;
if (i == _tagArray.count-1) { //当已经是最后一个时,不必等到下一组,直接计算当前组的起点
//当前组的起点 =(屏幕宽度 - 当前组组长)/2
//当前组组长 = 字节数*11 + 每个按钮前后宽度*(_tagArray.count%3)个按钮 + 按钮几之间的空隙*(_tagArray.count%3-1)
//我这里忽略了按钮Layer的描边宽度,所以看起来偏左一点点点点点点点点点点点点点点点点点点点点
tempInt = (kScreenWidth - (tempInt*11+50*(_tagArray.count%3)+20*(_tagArray.count%3-1)))/2;
//将当前组的X起点记录到可变数组中
[tempArray addObject:[NSString stringWithFormat:@"%ld", tempInt]];
}
}
//-----------------------------------------------------创建按钮-----------------------------------------------------
//设定变量记录按钮位置,以便用它来设置下个Button的起点
float temp = 0;
//循环开始了,准备创建按钮
for (NSInteger i = 0; i<_tagArray.count; i++) {
TagModel *tagModel = _tagArray[i];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
if (i%3 == 0) {
//设定每一组的起点,从上面已经存储了起点位置的数组中取出来
temp = [tempArray[i/3] floatValue];
}
button.frame = CGRectMake(temp, 50+50*(i/3), 50+11*tagModel.name.length, 35);
//当前按钮的起点由上一个按钮的位置确定,下一个按钮的起点由现在这个按钮大小确定
temp += 50+10*tagModel.name.length + 20;
//以下是按钮的属性基本设置,不是本文的重点了
[button setTitle:tagModel.name forState:UIControlStateNormal];
[button setTitleColor:[UIColor colorWithRed:154/255.0 green:154/255.0 blue:154/255.0 alpha:1] forState:UIControlStateNormal];
button.titleLabel.font = [UIFont systemFontOfSize:14];
button.layer.cornerRadius = 17.5;
button.layer.borderWidth = 1;
button.layer.borderColor = [UIColor colorWithRed:154/255.0 green:154/255.0 blue:154/255.0 alpha:.3].CGColor;
[button addTarget:self action:@selector(tagButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[tagScrollView addSubview:button];
}
提问:我PS玩得还可以,本组做的项目图片,我都可以用PS精确提取出来,而且速度还蛮快的,不必美工差。这样一个熟练iOS也擅长使用PS的淫才,公司会更喜欢吗?