在写项目的时候,for循环创建多个button,在需要设置背景图片和,需要标记所选中的button的需求,

在这里提供两种方法:

一:

1:把for循环创建的button全部装到一个新建的数组中,把他们的点击事件都写在一个方法里,把button给传到方法中去,在button的点击方法里面遍历装有button的数组,让他显示没有被选择的图片,然后在把传进来的button设置成选择的图片,就可以了!

1)需要设置默认的可以如下设置

        UIButton *haddbtns = [btnsAry objectAtIndex:];
[haddbtns setTitle:@"默认封面" forState:UIControlStateNormal];
haddbtns.titleLabel.font = [UIFont systemFontOfSize:];
haddbtns.titleLabel.backgroundColor=RGBA(, , , 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++heigh++INTERVAL_WIDHT, ADD_WIDTH, );
labs.tag = j+;
labs.backgroundColor = RGBA(, , , 0.5); labs.hidden = YES;
labs.userInteractionEnabled = YES;
[bgScroll addSubview:labs];
if (j==) {
labs.hidden = NO;
labs.text = @"默认封面";
labs.font = [UIFont systemFontOfSize:];
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-+;
defaultLabel.hidden = YES;
UILabel *label = (UILabel *)[self.view viewWithTag:tag];
label.hidden = NO;
label.text = @"设置封面";
label.font = [UIFont systemFontOfSize:];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
defaultLabel = label;

传进来一个button,根据创建button的tag值找到指定的lab,然后设置相应lab的属性就可以了;这样的话就可以实现了,

扩展:如果需要一直展示默认的图片,也就是用户没有自行选择,可以这样操作,声明一个UILabel *defaultLabel;

然后在设置默认图片的时候关联一下defaultLabel = labs;最后在点击方法里面设置defaultLabel.hidden = YES;最后设置关联defaultLabel = label;就可以了,详细的代码都在上面可以看看!

补充下其他的实现方式:

先说一下原理,就是利用中间变量来记录某个选中状态的按钮,加一个判断,如果用户下一次点击的不是这个按钮那么用中间变量把这个按钮的选中状态取消掉,再把新的按钮赋值给中间变量,这能保证选中状态的惟一性。这里是OC 应用在iOS 项目中的,下面来看具体实现。

首先我们先定义一个中间变量

@property (strong,nonatomic)UIButton * tmpBtn;

然后在ViewDidLoad方法里,创建四个按钮,设置它们属性,以及点击方法,在此外设置中间变量tmpBtn = nil;

—(void)viewDidLoad{
NSArray * array = [NSArray arrayWithObjects:@"默认",@"销量",@"价格",@"时间", nil];
for (int i = ; i<; i ++) {
UIButton * button = [[UIButton alloc]initWithFrame:CGRectMake(*i, , , )];
[button setTitle:[array objectAtIndex:i] forState:UIControlStateNormal];
[button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];
[button.titleLabel setFont:[UIFont systemFontOfSize:]];
[button.layer setBorderWidth:0.3];
button.userInteractionEnabled = YES;
[button addTarget:self action:@selector(buttonSelected:) forControlEvents:UIControlEventTouchUpInside];
[button setBackgroundColor:[UIColor whiteColor]];
[button setTag:i];
[self.view addSubview:button]; } 下面来看buttonselected:里面的实现过程 -(void)buttonSelected:(UIButton*)sender{
if (_tmpBtn == nil){
sender.selected = YES;
_tmpBtn = sender;
}
else if (_tmpBtn !=nil && _tmpBtn == sender){
sender.selected = YES; }
else if (_tmpBtn!= btn && _tmpBtn!=nil){
_tmpBtn.selected = NO;
sender.selected = YES;
_tmpBtn = btn;
} }

按钮的选中状态也可以直接在sb和xib里面设置好,!

ios button标记的更多相关文章

  1. iOS Button按钮 热区的放大

      Apple的iOS人机交互设计指南中指出,按钮点击热区应不小于44x44pt,否则这个按钮就会让用户觉得“很难用”,因为明明点击上去了,却没有任何响应. 但我们有时做自定义Button的时候,设计 ...

  2. iOS button 里边的 字体的 摆放

    button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; button.titleEdgeInsets ...

  3. iOS Button 上文字图片位置的设置

    1. 添加图片+文字/文字+图片 ,不分前后,图片默认在文字前边 加空格隔开 UIButton * button =[[UIButton alloc] initWithFrame:CGRectMake ...

  4. iOS Button选中与取消

    /** * 是否点击 */ @property (nonatomic ,assign) BOOL selected; /** *  button 点击事件选中取消选中 */ - (void)handl ...

  5. ios Button

    展现效果例如以下: 功能说明: 1加入来图片背景, 2动态展现百度网页, 3动态加入button. 4展现提示框.展现你点击提示框得index  我成功来你也快来试试. 1 详细得项目创建与拖动but ...

  6. iOS button文字居中

    新建一个UIButton的category .h @interface UIButton (QXTitleInCenter) -(instancetype)init; @end .m @impleme ...

  7. iOS Button添加阴影 和 圆角

    用iamgeview 加手势代替 self.headimageview = [[UIImageView alloc] initWithFrame:CGRectMake(IPHONEWIDTH(13), ...

  8. iOS Button设置

    UIButton *kefuBtn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )]; kefuBtn.backgroundColor = SX ...

  9. 一个表单里,如果有<button>标签存在,它会自动提交表单

    可以用button代替input type=”submit”吗? 在ie下,<button>标记恐怕还存在几个不大不小的问题. 在一个表单里,如果有一个以上"submit&quo ...

随机推荐

  1. 在js代码中调用jsp的变量

    <% int coblid=Integer.parseInt(request.getParameter("blid")); %> <script> var ...

  2. 面试-Hash是怎么实现的?

    相关资料:http://blog.csdn.net/luyuncsd123/article/details/11590861 Hash生命起源:那么,我们开始思考:有什么方式既能够具备数组的快速查询的 ...

  3. 一款纯css3实现的动画按钮

    今天给大家分享一款纯css3实现的动画按钮.第一排的按钮当鼠标经过的背景色动画切换,图标从右侧飞入,第二排的按钮当鼠标经过的时候边框动画切换,图标右侧飞入,效果非常好,一起看下效果图: 在线预览    ...

  4. 纯css3实现图片三角形排列

    当今是个读图时代.纯大部分网页或多或少都会用到图片.特别是图片较多的网页.图片的布局和排版就非常重要了.今天要给大写带来一款纯css3实现图片三角形排列.适合一系列的图片.效果图如下: 在线预览    ...

  5. JS地毯式学习四

    1  窗口的位置 用来确定和修改 window 对象位置的属性和方法有很多. IE . Safari . Opera 和 Chrome都提供了 screenLeft 和 screenTop 属性,分别 ...

  6. redis 最优雅的错误提示

    Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: DENIED Redis ...

  7. 可变参数宏...和__VA_ARGS__

    __VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持).实现思想就是宏定义中参数列表的最后一个参数为 ...

  8. 专题实验 EXP & IMP

    导入导出时 oracle 提供的实用工具, 如果这些被导出的对象还存在其他的相关对象, 比如要被导出的表上还存在索引, 注释等, 则导出工具会自动将这些相关的对象也提取出来, 并放入到导出的文件中去. ...

  9. 各种api接口

    实用号码归属地查询(IP 地址,手机号码): 默认格式: http://api.liqwei.com/location/ (使用来访者的 IP 地址) 指定 IP 地址格式: http://api.l ...

  10. MATLAB中常用的排列、组合、阶乘函数

    1.求n的阶乘,方法如下:a.factorial(n)b.gamma(n+1)c.v='n!'; vpa(v) 2.求组合(数),方法如下:a.combntns(x,m)    列举出从n个元素中取出 ...