在写项目的时候,for循环创建多个button,在需要设置背景图片和,需要标记所选中的button的需求,
在这里提供两种方法:
一:
1:把for循环创建的button全部装到一个新建的数组中,把他们的点击事件都写在一个方法里,把button给传到方法中去,在button的点击方法里面遍历装有button的数组,让他显示没有被选择的图片,然后在把传进来的button设置成选择的图片,就可以了!
1)需要设置默认的可以如下设置
UIButton *haddbtns = [btnsAry objectAtIndex:0]; [haddbtns setTitle:@"默认封面" forState:UIControlStateNormal]; haddbtns.titleLabel.font = [UIFont systemFontOfSize:15]; haddbtns.titleLabel.backgroundColor=RGBA(29, 29, 29, 0.5); haddbtns.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom; haddbtns. contentHorizontalAlignment =UIControlContentHorizontalAlignmentCenter; [bgScroll bringSubviewToFront:haddbtns.titleLabel];
2)然后遍历数组,
for (UIButton *btns in btnsAry) { if (btns) { [btns setTitle:@"" forState:UIControlStateNormal]; } }
被遍历的button显示未被选择的button,传进来的btn显示被选择的样式;
二:
在for循环创建button的时候,在循环里面创建一个lab或者view都行,只要你认为能标记他们的就行;
1)for循环创建lab
UILabel *labs = [[UILabel alloc]init]; labs.frame =CGRectMake(appviewx, appviewy+170+heigh+420+INTERVAL_WIDHT, ADD_WIDTH, 20); labs.tag = j+10; labs.backgroundColor = RGBA(29, 29, 29, 0.5); labs.hidden = YES; labs.userInteractionEnabled = YES; [bgScroll addSubview:labs]; if (j==0) { labs.hidden = NO; labs.text = @"默认封面"; labs.font = [UIFont systemFontOfSize:13]; labs.textAlignment = NSTextAlignmentCenter; labs.textColor = [UIColor whiteColor]; defaultLabel = labs; }
把lab的hidden设置成yes,然后设置默认的选择,样式随自己定,设置好了以后,只需要找到tag值所标记的那个lab让它的hidden为no,展示出来就行,
2)然后在点击方法里面进行操作,
UIButton *bg_imgBtn = (UIButton *)sender; NSLog(@"bg_imgBtn is %ld",(long)bg_imgBtn.tag); NSInteger bgTags = bg_imgBtn.tag; NSInteger tag = bg_imgBtn.tag-1+10; defaultLabel.hidden = YES; UILabel *label = (UILabel *)[self.view viewWithTag:tag]; label.hidden = NO; label.text = @"设置封面"; label.font = [UIFont systemFontOfSize:13]; label.textAlignment = NSTextAlignmentCenter; label.textColor = [UIColor whiteColor]; defaultLabel = label;
传进来一个button,根据创建button的tag值找到指定的lab,然后设置相应lab的属性就可以了;这样的话就可以实现了,
扩展:如果需要一直展示默认的图片,也就是用户没有自行选择,可以这样操作,声明一个UILabel *defaultLabel;
然后在设置默认图片的时候关联一下defaultLabel = labs;最后在点击方法里面设置defaultLabel.hidden = YES;最后设置关联defaultLabel = label;就可以了,详细的代码都在上面可以看看!
时间: 2024-10-09 19:40:23