ios button标记
在写项目的时候,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标记的更多相关文章
- iOS Button按钮 热区的放大
Apple的iOS人机交互设计指南中指出,按钮点击热区应不小于44x44pt,否则这个按钮就会让用户觉得“很难用”,因为明明点击上去了,却没有任何响应. 但我们有时做自定义Button的时候,设计 ...
- iOS button 里边的 字体的 摆放
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; button.titleEdgeInsets ...
- iOS Button 上文字图片位置的设置
1. 添加图片+文字/文字+图片 ,不分前后,图片默认在文字前边 加空格隔开 UIButton * button =[[UIButton alloc] initWithFrame:CGRectMake ...
- iOS Button选中与取消
/** * 是否点击 */ @property (nonatomic ,assign) BOOL selected; /** * button 点击事件选中取消选中 */ - (void)handl ...
- ios Button
展现效果例如以下: 功能说明: 1加入来图片背景, 2动态展现百度网页, 3动态加入button. 4展现提示框.展现你点击提示框得index 我成功来你也快来试试. 1 详细得项目创建与拖动but ...
- iOS button文字居中
新建一个UIButton的category .h @interface UIButton (QXTitleInCenter) -(instancetype)init; @end .m @impleme ...
- iOS Button添加阴影 和 圆角
用iamgeview 加手势代替 self.headimageview = [[UIImageView alloc] initWithFrame:CGRectMake(IPHONEWIDTH(13), ...
- iOS Button设置
UIButton *kefuBtn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )]; kefuBtn.backgroundColor = SX ...
- 一个表单里,如果有<button>标签存在,它会自动提交表单
可以用button代替input type=”submit”吗? 在ie下,<button>标记恐怕还存在几个不大不小的问题. 在一个表单里,如果有一个以上"submit&quo ...
随机推荐
- Kibana查询说明
elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 Kibana接口概述 Kibana接口分为四个主要部分: 发现 可视化 仪表板 设置 我们将按照列出的顺序浏览每个部分的 ...
- c++之五谷杂粮4---explicit
4.1在要求隐式转换的程序上下文中,我们可以通过将构造函数声明为explicit加以阻止. 关键字explicit只对一个实参的构造函数有效.需要多个实参的构造函数不能用于执行隐式转换,所以无需将这些 ...
- egret学习记录
最近h5小游戏比较流行,本来我是做cocos2dx的,一开始想用它的js版. 可惜看着js真是头大.于是选择了egret,egret采用typescript,学过面向对象的,上手还是比较快的,而且ap ...
- xml与dataset的数据交互
1. this.dsConfig = new DataSet(); //使用指定的文件将 XML 架构和数据读入 System.Data.DataSet. this.dsConfig.ReadXml( ...
- Android——实现欢迎界面的自动跳转(转)
Android实现欢迎界面的自动跳转,就是打开某一个安卓手机应用,出现的欢迎界面停留几秒钟,自动进入应用程序的主界面.在网上看到很多种实现办法,但是感觉这种方法还是比较简单的. 在onCreate里设 ...
- linux挂载根文件系统过程
linux-2.6.36内核 start arch/arm/boot/compressed/head.S arch/arm/kernel/head.S start_kernel() ...
- 网络硬盘录像机和数字硬盘录像机区别(nvr dvr ipc区别)
DVR Digital Video Recorder 数字硬盘录像机 NVR Network Video Recorder 网络硬盘录像机 DVR(数字硬盘录像机)和NVR(网络硬盘录像机)在 ...
- MySQL 源代码scr.rpm安装的一点注意事项
rpm安装包通常为二进制包(Binary)以及源代码包(Source)两种形式. 在使用源代码方式安装MySQL的时候,官方站点上下载的源代码包通常为scr.rpm格式,而不是直接的tar包.对此,须 ...
- redis调优
1.先把持久化数据备份一份,然后使用rdb分析工具分析一下大的键值2.然后DBA删除一部分不用的3.然后再配置最大内存 千万不要没清理数据就直接把内存限制较小 那样会触发redis对内存达到限制的处理 ...
- iOS边练边学--UITableView性能优化之三种方式循环利用
一.cell的循环利用方式1: /** * 什么时候调用:每当有一个cell进入视野范围内就会调用 */ - (UITableViewCell *)tableView:(UITableView *)t ...