iOS学习24之UIControl及其子类

2023-05-16

1. UIControl初识

 1> 概述

  UIControl是有控制功能的视图( 如UIButton、UISlider、UISegmentedControl等)的父类

  只要跟控制有关的控件都是继承于该类

  UIControl这个类通常我们并不直接使用,而是使用其子类

 2> 事件响应的三种形式 : 基于触摸 , 基于 , 基于编辑

 3> UIControl常用的方法

  ① 添加一个事件

  - (void)addTarget:(nullable id)target action:(nullable SEL)action forControlEvents:(UIControlEvents)controlEvents;

  参数说明:target目标对象; action方法选择器; controlEvents触发事件

  ② 移除一个事件

  - (void)removeTarget:(nullable id)target action:(nullable SEL)action forControlEvents:(UIControlEvents)controlEvents;

  参数说明:target目标对象; action方法选择器; controlEvents触发事件

 4> 事件处理

  当触摸从控件内部拖动到外部时触发 UIControlEventTouchDragExit

  当控件之内触摸抬起时触发(点击一下) UIControlEventTouchUpInside

  控件之外触摸抬起时触发 UIControlEventTouchUpOutside

  触摸取消事件,设备被上锁或者电话呼叫打断 UIControlEventTouchCancel

  用户按下时触发 UIControlEventTouchDown 

  点击计数大于1时触发 UIControlEventTouchDownRepeat

  当触摸在控件内拖动时触发 UIControlEventTouchDragInside 

  当触摸在控件之外拖动时触发 UIControlEventTouchDragOutside 

  当触摸从控件之外拖动到内部时触发 UIControlEventTouchDragEnter

  当控件的值发生变化时。用于滑块、分段控件等控件。UIControlEventValueChanged

  文本控件中开始编辑时 UIControlEventEditingDidBegin

  本控件中本被改变 UIControlEventEditingChanged

  本控件中编辑结束时 UIControlEventEditingDidEnd

  本控件内通过按下回车键结束编辑时 UIControlEventEditingDidOnExit

  所有触摸事件 UIControlEventAllTouchEvents

  文本编辑的所有事件 UIControlEventAllEditingEvents

  所有事件 UIControlEventAllEvents

2. UISwitch的使用

 1> 概述

  UISwitch继承于UIControl,通常被叫做开关

 2> UISwitch的常用的方法和属性

  初始化: - (instancetype)initWithFrame:

   注意:这里的frame只有origin起作用,size使用系统默认大小 

  onTintColor  设置开关开启状态时的颜 

  tintColor  设置开关风格颜 

  thumbTintColor  设置开关按钮颜

  on  开关的状态

  setOn:animated:  手动设置开关状态

代码


 1 // 1.创建对象
 2     
 3     // 设置frame只有origin起作用,size使用系统默认的大小
 4     UISwitch *firstSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(200, 100, 0, 0)];
 5     
 6     // 2.设置属性
 7     
 8     // 设置开关开启状态时的颜色
 9     firstSwitch.onTintColor = [UIColor cyanColor];
10     
11     // 设置开关风格(样式)颜色
12     firstSwitch.tintColor = [UIColor cyanColor];
13     
14     // 设置开关按钮颜色
15     firstSwitch.thumbTintColor = [UIColor purpleColor];
16     
17     // 设置开关的状态
18     firstSwitch.on = YES;
19     
20     [firstSwitch setOn:NO animated:YES];
21     
22     // 3.添加点击事件
23     [firstSwitch addTarget:self action:@selector(firstSwitchAction:) forControlEvents:UIControlEventTouchUpInside];
24     
25     // 4.添加到父视图
26     [self.rootView addSubview:firstSwitch];  

点击事件


1 // 点击事件
2 - (void)firstSwitchAction:(UISwitch *)sender
3 {
4     if (sender.on) {
5         NSLog(@"开了...");
6     } else {
7         NSLog(@"关了...");
8     }
9 }  

3. UISlider的使用

1> 概述

UISlider是iOS中的滑块控件

通常用于控制视频播放进度,控制音量等

他继承了UIControl,滑块提供了一系列连续的值,滑块停在不同的位置,获取到滑块上的值也不同

2> UISlider的常用属性

View代码:


 1     // 布局slider
 2     // 1.创建对象
 3     self.mySlider = [[UISlider alloc] initWithFrame:CGRectMake(7, 50, 400, 40)];
 4     // 2.设置属性
 5     self.mySlider.backgroundColor = [UIColor lightGrayColor];
 6     
 7     self.mySlider.value = 0.1;
 8     self.mySlider.minimumValue = 0.1;
 9     self.mySlider.maximumValue = 1;
10     
11     // 设置按钮的颜色
12     self.mySlider.thumbTintColor = [UIColor redColor];
13     
14     // 设置划过区域的颜色
15     self.mySlider.minimumTrackTintColor = [UIColor cyanColor];
16     
17     // 设置未划过区域的颜色
18     self.mySlider.maximumTrackTintColor = [UIColor purpleColor];
19     
20     [self addSubview:self.mySlider];  

control代码:


[self.rootView.mySlider addTarget:self action:@selector(firstSliderAction:) forControlEvents:UIControlEventValueChanged];

// 点击事件
- (void)firstSliderAction:(UISlider *)sender
{
         ...
}  

4. UISegmentedControl的使用

 1> 概述

  UISegmentedControl是iOS中常用的分段控件

  每个segment都能被点击,它相当于继承了若干个button。分段控件提供一栏按钮(有时称为按钮栏),但一个时刻只能激活其中一个按钮

  分段控件会导致用户在屏幕上看到的内容发生变化。它们常用被用在不同类别的信息之间选择,或者在切换不同的视图

 2> UISegmentedControl常用属性和方法

  initWithItems:  UISegmentedControl独有的初始化方法,用来创建多个分段

  selectedSegmentAtIndex  指定被选中的分段

  tintColor  UISegmentedControl条的颜色(含每个segment的颜色)

  addTarget:action:forControlEvents:  给UISegmentedControl添加事件

  注意:controlEventUIControlEventValueChanged

  原因:分段控件本质上通过数据管理分段,所以使用valueChanged属性来触发事件,即数组下标变化

view:


 1     // 1.布局分段选择器
 2      
 3     // 1.1 创建对象
 4     self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"女神", @"男神", @"程序员"]];
 5     
 6     self.segmentedControl.frame = CGRectMake(57, 100, 300, 50);
 7     
 8     // 1.2 设置属性
 9     
10     // 设置样式的颜色
11     self.segmentedControl.tintColor = [UIColor redColor];
12     
13     // 指定初始被选中的分段
14     self.segmentedControl.selectedSegmentIndex = 0;
15     
16     // 通过下标修改内容
17     [self.segmentedControl setTitle:@"阿福" forSegmentAtIndex:2];
18     
19     // 得到分段的个数(该数字readonly)
20     NSLog(@"%ld", self.segmentedControl.numberOfSegments);
21     
22     // 1.3 添加到父视图
23     [self addSubview:self.segmentedControl];
24     
25     // 2.布局图片
26     self.myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, CGRectGetMaxY(self.segmentedControl.frame) + 50, 314, 450)];
27     
28     // 设值默认图片
29     self.myImageView.image = [UIImage imageNamed:@"ns.jpg"];
30     
31     [self addSubview:self.myImageView];  

control中添加事件:


 1 // 1.4 添加事件
 2     [self.rootView.segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
 3 
 4 // 点击事件
 5 - (void)segmentAction:(UISegmentedControl *)sender
 6 {
 7     if (0 == sender.selectedSegmentIndex) {
 8         // 图片为女神
 9         self.rootView.myImageView.image = [UIImage imageNamed:@"ns.jpg"];
10     } else if (1 == sender.selectedSegmentIndex) {
11         // 图片为男神
12         self.rootView.myImageView.image = [UIImage imageNamed:@"nas.jpg"];
13     } else {
14         // 图片为程序员
15         self.rootView.myImageView.image = [UIImage imageNamed:@"ds.jpg"];
16     }
17 }  

 3> UISegmentedControl基本样式

  通过segmentedControlStyle属性设置UISegmentedControl样式

 

5. UIPageControl的使用

 1> 概述

  UIPageControl控件在程序中出现的比较频繁,尤其在和UIScrollView(滚动视图)配合来显示大量数据时,会使用 它来控制UIScrollView的翻页。在滚动ScrollView时可通过PageControl中的小白点来观察当前页面的位置,也可通过点击PageControl中的下标点来滚动到指定的页面。

 2> UIPageControl常用属性和方法

View代码


 1    // 创建对象
 2     UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(107, 600, 200, 50)];
 3     
 4     pageControl.backgroundColor = [UIColor lightGrayColor];
 5     
 6     // 设置未显示页(未选中的点)的样式颜色
 7     pageControl.pageIndicatorTintColor = [UIColor whiteColor];
 8     
 9     // 设置显示页(选中的点)的样式颜色
10     pageControl.currentPageIndicatorTintColor = [UIColor purpleColor];
11     
12     // 指定页面个数(即点的个数)
13     pageControl.numberOfPages = 5;
14     
15     // 指定pageControl的值(即选中的点)
16 //    pageControl.currentPage = 1;
17     
18     // 当页数只有一页时,就行隐藏,默认值为NO
19 //    pageControl.hidesForSinglePage = YES;
20     
21 //    pageControl.defersCurrentPageDisplay = YES;
22     
23     [self.view addSubview:pageControl];  

control代码


 1 [pageControl addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged];
 2 
 3 - (void)pageControlAction:(UIPageControl *)pageControl
 4 {
 5     NSInteger pageIndex = pageControl.currentPage;
 6     switch (pageIndex) {
 7         case 0:
 8             self.myView.backgroundColor = [UIColor redColor];
 9             break;
10         
11         case 1:
12             self.myView.backgroundColor = [UIColor grayColor];
13             break;
14             
15         case 2:
16             self.myView.backgroundColor = [UIColor greenColor];
17             break;
18             
19         case 3:
20             self.myView.backgroundColor = [UIColor lightGrayColor];
21             break;
22             
23         case 4:
24             self.myView.backgroundColor = [UIColor blackColor];
25             break;
26             
27         default:
28             break;
29     }
30 }  

 

转载于:https://www.cnblogs.com/gfxxbk/p/5377035.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS学习24之UIControl及其子类 的相关文章

  • Python 3 教程二:文件,目录和路径

    1 遍历文件夹和文件 import os import os path os os path里包含大多数文件访问的函数 所以要先引入它们 请按照你的实际情况修改这个路径 rootdir 61 34 d download 34 for par
  • [BZOJ1925]地精部落

    地精部落 题目描述 传说很久以前 xff0c 大地上居住着一种神秘的生物 xff1a 地精 地精喜欢住在连绵不绝的山脉中 具体地说 xff0c 一座长度为N的山脉H可分为从左到右的N段 xff0c 每段有一个独一无二的高度Hi xff0c
  • 【C#学习笔记】类构造函数使用

    using System namespace ConsoleApplication class stu private string name private int age public stu name 61 34 34 age 61
  • VS2010(VS2008)下安装配置OpenCV

    研究生课题做嵌入式图像处理方向 xff0c 所以主要涉及的知识就是嵌入式Linux 43 OpenCV 43 QT xff0c 主要OpenCV和QT都是跨平台的 xff0c 而且充分利用好的话再后期的算法设计和功能扩展上就方便很多 只是之
  • iOS开发基础篇--CAShapeLayer的strokeStart和strokeEnd属性

    一 案例演示 最近有一个小需求 xff0c 就是要做一个圆形进度条 xff0c 大概样子如下 xff1a 1 gif 在不知道有CAShapeLayer的strokeStart和strokeEnd属性的时候 xff0c 我采取的方法就是实时
  • 排序算法——选择排序法(Select Sorting)

    选择排序 xff08 Select Sorting xff09 基本介绍 选择排序也属于内部排序法 xff0c 是从预排序的数据中 xff0c 按指定的规则选出某一元素 xff0c 再依规定交换位置后达到排序的目的 选择排序思想 选择排序
  • 面试时,你被问到过 TCP/IP 协议吗?

    前言 精通 TCP IP xff0c 熟练使用 Socket 进行网路编程 看到这句话 xff0c 有没有感到很熟悉呀 xff1f 相信很多人在投递简历的时候都看到过这条要求 xff0c 很多人会觉得我们在实际开发中一般用不到这些知识 xf
  • Storyboard使用TableView进行页面跳转传值

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 场景 StoryBoard中 A 界面 TableView B界面 明细页面 A amp B通过Cell的Section Action事件进行页面跳转 Controller
  • jsp九大内置对象和四种属性范围介绍

    一般对象需要实例化才可以调用 xff0c 而JSP的内置对象是不用实例化就可以直接调用的对象 总共有9个 xff0c 对应如下表 xff1a 序号 对象 类型 1 pageContext javax servlet jsp PageCont
  • Android Lint扫描规则说明(一)

    主要内容 对Android Studio支持的六类Android Lint规则 xff0c 本文主要对Accessibility 和 Internationalization 两中类型所包含的14个项的说明 xff0c 主要内容都是文档翻译
  • openstack 构建availability-zone

    首先介绍一下的的环境 xff1a manager节点的服务 xff1a keystone xff0c mysql xff0c nova所有组件 xff0c glance xff0c quantum server xff0c nova com
  • ubuntu/debian终端不支持中文解决办法

    为什么80 的码农都做不了架构师 xff1f gt gt gt aptitude install locales dpkg reconfigure locales 配置编码进入选择 xff1a 空格键是选择 xff0c 不是ENTER xf
  • PHP十进制数字转换为26进制字母函数

    很久以前为导出EXCEL写过一个字母累加的函数 xff0c 今天追加一个数字转为字母的 也就是十进制转26进制 1234567891011121314151617 for i 61 1 i lt 200 i 43 43 echo i 39
  • SVG.js 元素操作整理(一)

    一 属性操作Attributes var draw 61 SVG 39 svg1 39 size 300 300 attr 属性操作 设置属性的值 var rect 61 draw rect 100 100 rect attr 39 x 3
  • JS 比较两个数组是否相等 是否拥有相同元素

    Javascript怎么比较两个数组是否相同 xff1f JS怎么比较两个数组是否有完全相同的元素 xff1f Javascript不能直接用 61 61 或者 61 61 61 来判断两个数组是否相等 xff0c 无论是相等还是全等都不行
  • Win11 安卓子系统安装过程

    1 环境要求 xff1a 系统为windows 11版本为22000 xx或者以上版本 xff1b 建议系统内存为16G或者以上 xff1b 2 安装windows虚拟化支持 功能 进入设置 应用 可选功能 更多 Windows 功能 xf
  • java 取小数点后两位 不四舍五入,怎么做

    java 取小数点后两位 不四舍五入 怎么做 正常版 正常版 import java text DecimalFormat import java math RoundingMode DecimalFormat formater 61 ne
  • 华为硬件研发笔试题

    华为硬件笔试题1 一 选择 13个题目 没有全部抄下来 涉及的课程有电路 模拟电路 数字电路 信号与系统 微机原理 网络 数字信号处理 1 微分电路 2 CISC RISC 3 数据链路层 二 填空 10个题目 没有全部抄下来 涉及的课程有
  • es6数组去重(连重复的对象也可以去掉)

    1 xff0c 去除简单类型 ES6中新增了Set数据结构 xff0c 类似于数组 xff0c 但是 它的成员都是唯一的 xff0c 其构造函数可以接受一个数组作为参数 xff0c 如 xff1a span class hljs built
  • MySQL中varchar,varbinary的区别

    2019独角兽企业重金招聘Python工程师标准 gt gt gt MySQL中varchar xff0c varbinary的区别 varchar是可变长度字符类型 如果对应的数据库排序规则是utf8 general ci xff0c 那

随机推荐

  • 是谁发明了光纤?光纤的发明发展历史

    一 光纤通信的发展历史 1880年 xff0c 亚历山大 贝尔Alexander Graham Bell发明了 光话机 1887年 xff0c 英国科学家Charles Vernon Boys在实验室里拉出了第一条光纤 1938年 xff0
  • vs 2010 专业版 密钥

    YCFHQ 9DWCY DKV88 T2TMH G7BHP 转载于 https www cnblogs com daretodream archive 2013 04 02 2995147 html
  • 公历,阴历转换

    公历 xff0c 阴历转换 static inline void ValidCtrCheck ThsDivineCalendar new ThsDivineCalendar NULL fastcall ThsDivineCalendar T
  • pytorch---情感分析

    前言 xff1a 这个系列一共有8个部分 主要参考了github上的几个代码 使用工具有torchtext xff0c pytorch 数据集主要是烂番茄电影评论数据集https www kaggle com c sentiment ana
  • 【three.js练习程序】旋转物体自身

    lt DOCTYPE html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt lt title gt ceshi lt title gt lt script type
  • Linux系统检查查看桌面环境

    Linux的桌面系统系统多达十几种 xff0c 像gnome kde mate cinnamon lxde xfce jwm等 比较常用的一般是gnome kde xfce等 那么如何判断Linux系统安装了哪种桌面环境组件呢 xff1f
  • Ubuntu18.04.4 安装xrdp 远程桌面

    因为工作的关系 xff0c 需要远程桌面使用Linux xff0c 安装了最新的Ubuntu18 04 4版本 参考了网上一堆的VNC和安装xubuntu等 xff0c 都不是自己想要的 xff0c ubuntu原生的桌面就非常的好 只是安
  • 小米手机android_id如何查看,一篇文章看懂如何通过手机上小米社区查Mi ID?

    作为小米社区的老用户都知道 xff0c 早先在老的小米社区App或者电脑版个人主页就可以直接查看到用户的Mi ID 而现在的新版本小米社区无论是App版本或者电脑端都无法再直接地查看到个人或者其他人Mi ID 本期Flashcer就和大家分
  • 使用寄存器点亮LED——编程实战

    stm32的编程和stc89c51还是存在着很多思想上的不同的 xff0c 在51单片机中 xff0c 我们点亮LED灯 xff0c 只用给对应IO高低电平就可以了 xff0c 而stm32中 xff0c 就一个简单的GPIO xff0c
  • 【转载】取消Debian系统自动锁屏

    Linux的自动锁屏功能 xff0c 会在你离开屏幕的两分钟 xff0c 甚至更短的时候内 xff0c 将屏幕锁住 xff0c 需要输入密码才能进入Linux系统 可按下图设置 xff0c 关掉Linux自动锁屏功能 System gt P
  • 如何cout输出CString对象?

    CString str 61 34 HeyLook 34 char pch 61 new char str GetLength 43 1 pch 61 str GetBuffer str GetLength 43 1 str Release
  • python中Tuple详解

    python中Tuple详解 另外 还有一个和list 很像的数据tuple 中文叫元组 他和list的主要区别就是 tuple是一开始就定义好的 即 assign first 之后就永远不能被改变了 所以 一般全局比较重要的数据 我们都是
  • 自动分析局域网内网速慢的电脑---结合IPERF,TASK SCHEDULE,PYTHON,MAIL

    今天写的 用IPERF作测试局域网速度的工具 用AD域组策略推送给客户端 xff0c xcopy y XXX XXX Iperf c Iperf 然后 xff0c 客户端会在每次LOGON的执行测试网速的BAT文件 xff0c 并将结果存放
  • 对IIC总线时序的一点理解以及ACK和NACK(NAK)

    参考自 xff1a http blog chinaunix net uid 16100003 id 3059814 html 关于IIC的响应问题 xff1a 对于每一个接收设备 xff08 从设备 xff0c slaver xff09 x
  • Permutation test(排列(组合)检验)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 对Permutation test 的首次描述可追溯到上个世纪30年代 Fisher 1935 和Pitman 1937 介绍了其在线性统计模型中的应用 但该法计算工作量过
  • windows全局变量设置

    今天安装jave RE xff0c 需要设置全局变量 xff0c 除了图形界面的配置外 xff0c 有没有其他的方式设置呢 xff0c 开始以为set可以 xff0c 看了半天没整明白到网上search下 xff0c 见到了几种方法 xff
  • ProxmoxVE 单机模式安装(2台服务器非集群)

    上面左边是我的个人微信 xff0c 如需进一步沟通 xff0c 请加微信 右边是我的公众号 Openstack私有云 xff0c 如有兴趣 xff0c 请关注 公司有两台测试服务器 xff0c 是华为的RH2288 V3 xff0c 配置6
  • Desktop.ini

    类型1 ShellClassInfo IconFile 61 abc exe abc ico IconIndex 61 0 类型2 ShellClassInfo IconResource 61 abc exe abc ico 0 类型2 的
  • linux下安装ntop

    Ntop是一种监控网络流量工具 xff0c 用ntop显示网络的使用情况比其他一些网络管理软件更加直观 详细 Ntop甚至可以列出每个节点计算机的网络带宽利用率 他是一个灵活的 功能齐全的 xff0c 用来监控和解决局域网问题的工具 xff
  • iOS学习24之UIControl及其子类

    1 UIControl初识 1 gt 概述 UIControl 是有控制功能 的视图 如UIButton UISlider UISegmentedControl等 的父类 只要跟控制有关的控件 都是继承于该类 UIControl 这个类通常