UISlider 滑块控件

简介:

一、创建

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

  1. UISlider* mySlider = [ [ UISlider alloc ] initWithFrame:CGRectMake(20.0,10.0,200.0,0.0) ];//高度设为0就好    

二、设定范围与默认值

创建完毕的同时我们要设置好滑块的范围,如果你没有设置,那么会使用默认的 0.0 到 1.0 之间的值。UISlider提供了两个属性来设置范围:mininumValue 和 maxinumValue:

  1. mySlider.mininumValue = 0.0;//下限   
  2. mySlider.maxinumValue = 50.0;//上限  

同时你也可以为滑块设定一个默认值:

  1. mySlider.value = 22.0;  

三、两端添加图片

滑块可以在任何一段显示图像。添加图像后会导致滑动条缩短,所以记得要记得在创建的时候增加滑块的宽度来适应图像。

  1. [ mySlider setMininumTrackImage: [ UIImage applicationImageNamed:@"min.png" ] forState: UIControlStateNormal ];  
  2. [ mySlider setMaxinumTrackImage: [ UIImage applicationImageNamed:@"max.png" ] forState: UIControlStateNormal ];  

你可以根据滑块的各种不同状态显示不同的图像。下面是可用状态:

UIControlStateNormal

UIControlStateHighlighted

UIControlStateDisabled

UIControlStateDisabled

UIControlStateSelected

四、显示控件

  1. [ parentView addSubview:myslider ];//添加到父视图   
  2. 或  
  3. [ self.navigationItem.titleView addSubview:myslider ];//添加到导航栏  

五、读取控件值

  1. float value = mySlider.value;  

六、通知

要想在滑块值改变时收到通知,可以用UIControl类的addTarget方法为UIControlEventValueChanged事件添加一个动作。

  1. [ mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEventValueChanged ];  

只要滑块停放(注意是停放,如果要在拖动中也触发,请看后文)到新的位置,你的动作方法就会被调用:

  1. - (void) sliderValueChanged:(id)sender{  
  2.         UISlider* control = (UISlider*)sender;  
  3.         if(control == mySlider){  
  4.                   float value = control.value;  
  5.                    /* 添加自己的处理代码 */  
  6.          }  
  7. }  

如果要在拖动中也触发,需要设置滑块的 continuos 属性:

  1. mySlider.continuous = YES ;  

这 个通知最简单的一个实例就是实时显示滑块的值,很奇怪的苹果显示滑块的值是一个私有的API(setShowValue),私有就私有,大不了我不用就 是。我们可以用一个UILabel来显示值,在每次触发上面的方法时改变label的值,不就可以实时显示了吗?当然我们可以做的不仅仅是这个,还有更多 的 cool 事情可以去实现,就看你的手段与想象力了。

///////////////////////

如果您希望在App里引入音量调节功能,生成一个滑动条,用户拖动该控件就能调节iPhone音量--可以用uislider + nstimer。

代码

[[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(volumeChanged:) 
      name:@"AVSystemController_SystemVolumeDidChangeNotification" 
      object:nil];

本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/archive/2012/03/14/2395578.html,如需转载请自行联系原作者

相关文章
|
安全 测试技术 网络安全
无需域名,如何通过IP地址申请SSL证书保障网站安全
SSL证书不仅适用于域名,还可为IP地址申请,确保无域名或局域网内数据传输安全。本文详解如何为IP地址申请SSL证书:选择支持的CA机构(如JoySSL),完成注册、验证并安装证书。特别适合没有域名、开发测试环境及局域网应用等场景。虽价格较高且供应商较少,但在特定需求下是有效解决方案。
|
安全 数据建模 应用服务中间件
如何给IP地址添加SSL证书(https)
为IP地址配置SSL证书实现HTTPS访问,需拥有固定公网IP,选择支持IP证书的CA,完成账户注册、证书申请、所有权验证及证书安装。验证过程涉及在服务器上放置特定文件,确保可访问。安装后需测试连接,注意兼容性和安全性,定期维护证书。
|
JavaScript 前端开发
前端基础 -JQuery之 可见性过滤选择器
前端基础 -JQuery之 可见性过滤选择器
97 0
|
缓存 安全 Ubuntu
基于Alpine构建轻量级带有cURL功能的Docker镜像
基于Alpine构建轻量级带有cURL功能的Docker镜像
基于Alpine构建轻量级带有cURL功能的Docker镜像
|
Perl
Command PhaseScriptExecution failed with a nonzero exit code问题解决
在某次pod install后,run项目出现以下错误
1130 0
|
druid 数据库
springcloud 整合 druid 阿里的数据库连接池
springcloud 整合 druid 阿里的数据库连接池
403 0
|
JavaScript 算法 前端开发
Nodejs内存控制详解(上篇)
JavaScript与Java一样,由垃圾回收机制来进行自动的内存管理。对于性能敏感的服务器端程序,内存管理的好坏、垃圾回收状况是否优良,都会对服务构成影响。而在Node中,这一切与V8引擎息息相关。
4550 0
|
存储 程序员 云计算
专家博客 云计算数据需要第三方保障
本文讲的是专家博客 云计算数据需要第三方保障,云计算与云存储供应商都有某种形式的SLA(服务水平协议)。我们都希望他们购买高质量的后端存储平台来存储数据,并希望他们采取合理的措施来保护这些数据。但是我们怎么知道他们的情况呢?我们需要第三方服务来提供保证。
1170 0