免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2194 | 回复: 1
打印 上一主题 下一主题

UISlider 滑块控件—IOS开发 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-05 20:22 |只看该作者 |倒序浏览

UISlider 滑块控件—IOS开发












PC上的滑块是很丑陋的,因为我们只能通过鼠标去拖动他。不过当Jobs把它移植到IOS上时一切变得酷起来,因为我们可以通过手指去拖动它,这种感觉是很妙的。

滑块为用户提供了一种可见的做范围调整的方法,用户可以通过拖动一个滑动条改变它的值,并且可以对其配置以合适不同值域。你可以设置滑块值的范围,也可以在两端加上图片,以及进行各种调整让它更美观。滑块非常适合用于表示在很大范围(但不精确)的数值中进行选择,比如音量设置、灵敏度控制等诸如此类的用途。

一、创建

滑块是一个标准的UIControl。我们可以通过代码创建,如同开关(UISwitch)的宽与高都会被忽略一样滑块的高也会被忽略(但是宽度不会):

  1. 01.UISlider* mySlider = [ [ UISlider alloc ] initWithFrame:CGRectMake(20.0,10.0,200.0,0.0) ];//高度设为0就好   
  2. 复制代码
复制代码
二、设定范围与默认值创建完毕的同时我们要设置好滑块的范围,如果你没有设置,那么会使用默认的 0.0 到 1.0 之间的值。UISlider提供了两个属性来设置范围:mininumValue 和 maxinumValue:
  1. 01.mySlider.mininumValue = 0.0;//下限  

  2. 02.mySlider.maxinumValue = 50.0;//上限  
  3. 复制代码
复制代码
同时你也可以为滑块设定一个默认值:
  1. 01.mySlider.value = 22.0;  
  2. 复制代码
复制代码
三、两端添加图片滑块可以在任何一段显示图像。添加图像后会导致滑动条缩短,所以记得要记得在创建的时候增加滑块的宽度来适应图像。
  1. 01.[ mySlider setMininumTrackImage: [ UIImage applicationImageNamed:@"min.png" ] forState: UIControlStateNormal ];  

  2. 02.[ mySlider setMaxinumTrackImage: [ UIImage applicationImageNamed:@"max.png" ] forState: UIControlStateNormal ];  
  3. 复制代码
复制代码
你可以根据滑块的各种不同状态显示不同的图像。下面是可用状态:UIControlStateNormalUIControlStateHighlightedUIControlStateDisabledUIControlStateDisabledUIControlStateSelected四、显示控件
  1. 01.[ parentView addSubview:myslider ];//添加到父视图  

  2. 02.或  

  3. 03.[ self.navigationItem.titleView addSubview:myslider ];//添加到导航栏  
  4. 复制代码
复制代码
五、读取控件值
  1. 01.float value = mySlider.value;  
  2. 复制代码
复制代码
六、通知要想在滑块值改变时收到通知,可以用UIControl类的addTarget方法为UIControlEventValueChanged事件添加一个动作。
  1. 01.[ mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEventValueChanged ];  
  2. 复制代码
复制代码
只要滑块停放(注意是停放,如果要在拖动中也触发,请看后文)到新的位置,你的动作方法就会被调用:
  1. 01.- (void) sliderValueChanged:(id)sender{  

  2. 02.        UISlider* control = (UISlider*)sender;  

  3. 03.        if(control == mySlider){  

  4. 04.                  float value = control.value;  

  5. 05.                   /* 添加自己的处理代码 */  

  6. 06.         }  

  7. 07.}  
  8. 复制代码
复制代码
如果要在拖动中也触发,需要设置滑块的 continuos 属性:
  1. 01.mySlider.continuous = YES ;  
  2. 复制代码
复制代码
这个通知最简单的一个实例就是实时显示滑块的值,很奇怪的苹果显示滑块的值是一个私有的API(setShowValue),私有就私有,大不了我不用就是。我们可以用一个UILabel来显示值,在每次触发上面的方法时改变label的值,不就可以实时显示了吗?当然我们可以做的不仅仅是这个,还有更多的 cool 事情可以去实现,就看你的手段与想象力了。

论坛徽章:
0
2 [报告]
发表于 2012-03-05 20:23 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP