for循环创建几行排列居中的按钮

for循环创建几行排列居中的按钮_第1张图片
这图片怎么那么难上传,得改

看一下上面这图片,里边的按钮都是用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的淫才,公司会更喜欢吗?

你可能感兴趣的:(for循环创建几行排列居中的按钮)