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 ...
随机推荐
- 使用Konva创建进度条
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- appium安卓自动化的 常用driver方法封装
appium安卓自动化的 常用driver方法封装 做安卓自动化的时候,很多方法写起来会造成代码冗余,把这部分封装起来 ,添加到androidUI工具类里,随时可调用 都放在这个类下面: @Compo ...
- 过滤4字节及以上的字符c++实现
这个是根据php的一个版本改的,用来处理utf-8编码的多字节字符,比如中文,俄文等等. #include <iostream> #include <string> int s ...
- linux环境变量设置 以及 source命令 Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程 Linux 设置环境变量
定制环境变量 环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell.对于Linux来说一般是bash,但也可以重新设定或切换到其它的Shell.环境变量文件:/etc/profil ...
- [转]Windows Server 2008 对 CPU 及 RAM 的支持规格
Windows Server 2008 对 CPU 的支援: 在看到下表时,请注意其数字所指的是:主板上的实体 CPU的个数,也就是几个 Sockets 举例来说,机器上安装 2 个 4 核心的 CP ...
- vsftpd配置文件丢失
deeplinux 卸载vsftpd重装,配置文件/etc/vsftpd.conf不能自动安装,解决办法如下: apt-get remove vsftpd --purge apt-get instal ...
- VS2008 express + opencv配置
刚开始接触opencv,不是很熟悉,配置过程主要参考了这篇博客,大家可以去看看 http://www.cnblogs.com/micky-zhou/archive/2012/08/06/2624433 ...
- [mmc]Linux下MMC/SD/SDIO的识别与操作
转自:http://blog.csdn.net/skdkjzz/article/details/38927943 我们知道host在扫描卡的过程中,其识别的顺序为SDIO SD MMC,并且从它的注 ...
- kernel headers
linux/delay延迟相关函数,长延时ssleep msleep(睡眠等待),短延时mdelay udelay(忙等待) linux/sched.h进程相关的头文件, struct task_st ...
- kill 信号大全
linux kill信号列表$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) S ...