iOS系列 基础篇 09 开关、滑块和分段控件

目录:

  1. 案例说明
  2. 开关控件Switch
  3. 滑块控件Slider
  4. 分段控件Segmented Control

1. 案例说明

  开关控件(Switch)、滑块控件(Slider)和分段控件(Segmented Control)都是UIControl的子类,本篇我们将通过一个案例和大家一起学习这三个控件的使用。

  如下图所示,本案例包括两个开关控件Switch、一个分段控件(Segmented Control)、两个标签(Label)和一个滑块控件(Slider):

  两个开关控件的值保持相反状态,点击其中的一个,令其值为ON,另一个也会随之发生变化。

  一个有两段的分段控件,左侧和右侧的段分别命名为Left和Right,点击Right时上面哪两个开关控件消失,点击Left时上面两个开关控件恢复显示。

  最下面那个滑块控件可以改变上面Label标签的文本内容,把滑块变化的树枝显示在Label上面。

2. 开关控件Switch

  使用Single View Application模板创建一个工程项目,打开Main.storyboard文件。

  从对象库中拖拽两个开关控件(Switch)到界面上,然后将它们的State属性设为相反。

  因为要在代码中控制使两个开关控件保持相反值,所以需要为两个开关控件置顶输出口,分别命名为LeftSwitch和RightSwitch。

  (PS:忘记怎么添加输出口的请看前面的文章《iOS系列 基础篇 07 Action动作和输出口》)

  按住control键,拖拽左边的Switch到右侧的代码中,添加Outlet输出口:

  设置名称为LeftSwitch:

  按照相同的方式添加右侧开关控件的Outlet,并命名为RightSwitch,最终效果为:

  在ViewController中声明一个switchValueChange: 方法,该方法的作用是同时设置两个开关的值,使它们的值保持相反。

  (PS:忘记如何添加Action动作的请参考前面的文章《iOS系列 基础篇 07 Action动作和输出口》)

  按住control键,拖拽开关控件到右侧代码中:

  在弹出的对话框中选择添加Action,并设置如下信息:

  添加Action动作方法之后,具体的实现代码如下:

     @IBAction func switchValueChanged(sender: AnyObject) {
         let senderSwitch = sender as! UISwitch  // 获取当前点击的控件并强制转型为Switch

         let value = senderSwitch.on // 获取当前点击Switch后的状态值

         // 如果当前点击的是LeftSwitch
         if (senderSwitch == self.LeftSwitch){
             self.RightSwitch.setOn(!value, animated: true)  // 设置右侧Switch的状态值
         }else{  // 如果当前点击的是RightSwitch
             self.LeftSwitch.setOn(!value, animated: true)    // 设置左侧Switch的状态值
         }
     }

  然后按住control,将右侧的Switch也拖拽到上面这个方法上,这样,两个Switch的Action就绑定在一个方法上了:

  运行效果如下:

3. 滑块控件Slider

  如上案例效果图所示,从对象库中拖拽一个滑块控件Slider到设计器中,并摆放在屏幕中央的位置。

  打开它的属性检查器,将其最小值、最大值、初始值依次设定为0.0、1.0、0.5。

  在iOS中,滑块的值是0.0到1.0之间的浮点数。

  在滑块上方如图所示,放置两个Label标签控件,将左侧的标签文本改为“滑块当前值:”,将右侧的文本设置为50。

  (因为滑块默认就是在中间的0.5,我想在Label上显示0~100,所以默认就50了)

  为右侧要显示值的Label添加Outlet输出口,并命名为SliderValue:

  在弹出的窗口中设置名称为SliderValue,如下:

  设置Slider的Outlet输出口后代码如下:

1 @IBOutlet weak var SliderValue: UILabel!

  右侧的这个Label是用来显示滑块当前值的,这里我们需要为滑块实现一个Action动作:

  将其命名为sliderValueChanged:

  滑块的Action代码如下:

     @IBAction func sliderValueChanged(sender: AnyObject) {
         let slider = sender as! UISlider    // 当前拖动的滑块
         let value = Int(slider.value*)   // 获取当前值(0.x)乘以100后的Int值
         let showText = NSString(format: "%d", value)    // 将数据格式化
         self.SliderValue.text = showText as String  // 显示在Label上
     }

  运行效果如下:

4. 分段控件Segmented Control

  分段控件(Segmented Control)也是一种选择控件,其功能类似于Windows中的单选按钮。

  它由两段或多段构成,每个段相当于一个独立的按钮。

  它有三种样式:Plain、Bordered和Bar样式,在iOS 7之后,这三种样式没有什么太大的区别,大家可以试试看。

  如上案例效果图所示,拖拽一个分段控件(Segmented Control)到设计器中,将左段文本设置为Left,右段文本设置为Right。

  然后添加Action方法touchDown:

     @IBAction func touchDown(sender: AnyObject) {
         if (self.LeftSwitch.hidden){    // 如果当前开关控件是显示的
             // 将两个开关都隐藏
             self.LeftSwitch.hidden = false
             self.RightSwitch.hidden = false
         }else{  // 如果当前开关控件是隐藏的
             // 将两个开关都显示
             self.LeftSwitch.hidden = true
             self.RightSwitch.hidden = true
         }
     }

  效果如下:

iOS系列 基础篇 09 开关、滑块和分段控件的更多相关文章

  1. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  2. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

  3. iOS系列 基础篇 05 视图鼻祖 - UIView

    iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...

  4. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

  5. iOS系列 基础篇 07 Action动作和输出口

    iOS系列 基础篇 07 Action动作和输出口 目录:  1. 前言及案例说明 2. 什么是动作? 3. 什么是输出口? 4. 实战 5. 结尾 1. 前言及案例说明 上篇内容我们学习了标签和按钮 ...

  6. iOS系列 基础篇 08 文本与键盘

    iOS系列 基础篇 08 文本与键盘 目录: 1. 扯扯犊子 2. TextField 3. TextView 4. 键盘的打开和关闭 5. 打开/关闭键盘的通知 6. 键盘的种类 7. 最后再扯两句 ...

  7. iOS开发UI篇—Date Picker和UITool Bar控件简单介绍

    iOS开发UI篇—Date Picker和UITool Bar控件简单介绍 一.Date Picker控件 1.简单介绍: Date Picker显示时间的控件 有默认宽高,不用设置数据源和代理 如何 ...

  8. Java多线程系列--“基础篇”09之 interrupt()和线程终止方式

    概要 本章,会对线程的interrupt()中断和终止方式进行介绍.涉及到的内容包括:1. interrupt()说明2. 终止线程的方式2.1 终止处于“阻塞状态”的线程2.2 终止处于“运行状态” ...

  9. iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试

    iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心 ...

随机推荐

  1. 4.2w起步的软件公司创业历程

    调查说,中国民营企业的生命期平均是2.8年,如今我的企业已走过近四年,而这一年却是我的迷茫期,不知道何去何从,现在写下 来与大家一起分享一下,写得较为凌乱,大家将就着看一下吧:) 先交待一下自己,我来 ...

  2. 【.NET深呼吸】基础:自定义类型转换

    照例,老周在开始吹牛之前,先讲讲小故事,这是朋友提出的建议,老TMD写技术有什么了不起的,人人都会写.后来老周想想,也确实,代码谁不会写,能写到有品位有感悟,就不容易做到.于是,老周接受了该朋友的建议 ...

  3. dom addeventlistener与id 绑定事件的区别

    文档中有写. //addEventListener() 方法用于向指定元素添加事件句柄. //提示: 使用 removeEventListener() 方法来移除 addEventListener() ...

  4. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(13)-系统日志和异常的处理③

    系列目录 上一节我们讲了如何捕获异常和记录日志,这一节我们讲,没有捕获的或者忘记捕获的异常包括404错误等,我们统一处理这个异常. 这一讲是利用 Application_Error 捕获所有异常,全局 ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(24)-权限管理系统-将权限授权给角色

    系列目录 过了个年回来,回顾一下,我们上次讲了角色管理,我们这一次来讲将权限授权给角色,这一节也是大家比较关心的.因为我们已经跑通了整个系统,知道权限的流转,我们先来看一张图 这张图主要分要3块,角色 ...

  6. .NET Core采用的全新配置系统[6]: 深入了解三种针对文件(JSON、XML与INI)的配置源

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  7. Angular定义服务-Learn By Doing

    1.服务(Service)介绍 Angular services are substitutable objects that are wired together using dependency ...

  8. Memcache缓存系统构建一

    在如今这个高效率的社会中,怎样将这个高效率应用到自己的程序中,是一个值得追寻和值得探讨的问题.因为这个memcache能够很好的提高检索速度,提升用户体验,而且重要的是减少数据库的访问.这就大大的提高 ...

  9. Solr5.5.1 IK中文分词配置与使用

    前言 用过Lucene.net的都知道,我们自己搭建索引服务器时和解决搜索匹配度的问题都用到过盘古分词.其中包含一个词典. 那么既然用到了这种国际化的框架,那么就避免不了中文分词.尤其是国内特殊行业比 ...

  10. Vmware虚拟机安装Ubuntu并设置root登陆

    主机操作系统是win7.在Ubuntu官网下好系统镜像.iso文件,安装好Vmware workstation软件 1 安装Ubuntu系统到Vmware虚拟机: 注意下面这步是无法直接设置账号为ro ...