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.创建对象

     // 设置frame只有origin起作用,size使用系统默认的大小
UISwitch *firstSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(, , , )]; // 2.设置属性 // 设置开关开启状态时的颜色
firstSwitch.onTintColor = [UIColor cyanColor]; // 设置开关风格(样式)颜色
firstSwitch.tintColor = [UIColor cyanColor]; // 设置开关按钮颜色
firstSwitch.thumbTintColor = [UIColor purpleColor]; // 设置开关的状态
firstSwitch.on = YES; [firstSwitch setOn:NO animated:YES]; // 3.添加点击事件
[firstSwitch addTarget:self action:@selector(firstSwitchAction:) forControlEvents:UIControlEventTouchUpInside]; // 4.添加到父视图
[self.rootView addSubview:firstSwitch];

点击事件

 // 点击事件
- (void)firstSwitchAction:(UISwitch *)sender
{
if (sender.on) {
NSLog(@"开了...");
} else {
NSLog(@"关了...");
}
}

3. UISlider的使用

1> 概述

UISlider是iOS中的滑块控件

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

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

2> UISlider的常用属性

View代码:

     // 布局slider
// 1.创建对象
self.mySlider = [[UISlider alloc] initWithFrame:CGRectMake(, , , )];
// 2.设置属性
self.mySlider.backgroundColor = [UIColor lightGrayColor]; self.mySlider.value = 0.1;
self.mySlider.minimumValue = 0.1;
self.mySlider.maximumValue = ; // 设置按钮的颜色
self.mySlider.thumbTintColor = [UIColor redColor]; // 设置划过区域的颜色
self.mySlider.minimumTrackTintColor = [UIColor cyanColor]; // 设置未划过区域的颜色
self.mySlider.maximumTrackTintColor = [UIColor purpleColor]; [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添加事件

  注意:controlEvent为UIControlEventValueChanged

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

view:

     // 1.布局分段选择器

     // 1.1 创建对象
self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"女神", @"男神", @"程序员"]]; self.segmentedControl.frame = CGRectMake(, , , ); // 1.2 设置属性 // 设置样式的颜色
self.segmentedControl.tintColor = [UIColor redColor]; // 指定初始被选中的分段
self.segmentedControl.selectedSegmentIndex = ; // 通过下标修改内容
[self.segmentedControl setTitle:@"阿福" forSegmentAtIndex:]; // 得到分段的个数(该数字readonly)
NSLog(@"%ld", self.segmentedControl.numberOfSegments); // 1.3 添加到父视图
[self addSubview:self.segmentedControl]; // 2.布局图片
self.myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(, CGRectGetMaxY(self.segmentedControl.frame) + , , )]; // 设值默认图片
self.myImageView.image = [UIImage imageNamed:@"ns.jpg"]; [self addSubview:self.myImageView];

control中添加事件:

 // 1.4 添加事件
[self.rootView.segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; // 点击事件
- (void)segmentAction:(UISegmentedControl *)sender
{
if ( == sender.selectedSegmentIndex) {
// 图片为女神
self.rootView.myImageView.image = [UIImage imageNamed:@"ns.jpg"];
} else if ( == sender.selectedSegmentIndex) {
// 图片为男神
self.rootView.myImageView.image = [UIImage imageNamed:@"nas.jpg"];
} else {
// 图片为程序员
self.rootView.myImageView.image = [UIImage imageNamed:@"ds.jpg"];
}
}

 3> UISegmentedControl基本样式

  通过segmentedControlStyle属性设置UISegmentedControl样式

5. UIPageControl的使用

 1> 概述

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

 2> UIPageControl常用属性和方法

View代码

    // 创建对象
UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(, , , )]; pageControl.backgroundColor = [UIColor lightGrayColor]; // 设置未显示页(未选中的点)的样式颜色
pageControl.pageIndicatorTintColor = [UIColor whiteColor]; // 设置显示页(选中的点)的样式颜色
pageControl.currentPageIndicatorTintColor = [UIColor purpleColor]; // 指定页面个数(即点的个数)
pageControl.numberOfPages = ; // 指定pageControl的值(即选中的点)
// pageControl.currentPage = 1; // 当页数只有一页时,就行隐藏,默认值为NO
// pageControl.hidesForSinglePage = YES; // pageControl.defersCurrentPageDisplay = YES; [self.view addSubview:pageControl];

control代码

 [pageControl addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged];

 - (void)pageControlAction:(UIPageControl *)pageControl
{
NSInteger pageIndex = pageControl.currentPage;
switch (pageIndex) {
case :
self.myView.backgroundColor = [UIColor redColor];
break; case :
self.myView.backgroundColor = [UIColor grayColor];
break; case :
self.myView.backgroundColor = [UIColor greenColor];
break; case :
self.myView.backgroundColor = [UIColor lightGrayColor];
break; case :
self.myView.backgroundColor = [UIColor blackColor];
break; default:
break;
}
}

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

  1. ios学习笔记之UIControl解读

    UIControl,相信大家对其并不陌生吧,比如平常最常用的UIButton就是继承自UIControl的.按照惯例,还是先来看看为什么有UIControl这个类?什么时候用到它? 查下文档就可以看到 ...

  2. iOS 学习 - 24 全局跑马灯,支持后台回到前台

    思路: 1.创建一个单例 + (instancetype)shareManager { static CCPaomaView *pModel = nil; static dispatch_once_t ...

  3. iOS学习资料整理

    视频教程(英文) 视频 简介 Developing iOS 7 Apps for iPhone and iPad 斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS S ...

  4. iOS 学习

    iOS 学习资料 (适合初学者) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解 ...

  5. iOS 学习资料汇总

    (适合初学者入门) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解了一些 iOS ...

  6. IOS学习笔记48--一些常见的IOS知识点+面试题

      IOS学习笔记48--一些常见的IOS知识点+面试题   1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...

  7. iOS学习路线图

    一.iOS学习路线图   二.iOS学习路线图--视频篇       阶 段 学完后目标 知识点 配套学习资源(笔记+源码+PPT) 密码 基础阶段 学习周期:24天       学习后目标:    ...

  8. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  9. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

随机推荐

  1. NYOJ题目817英文藏头诗

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtEAAAKXCAIAAADLqoEhAAAgAElEQVR4nO3dO1LrzNbG8W8S5AyE2D

  2. poj 1837

    题目链接:http://poj.org/problem?id=1837 题目大意: 有一个天平,左臂右臂各长15,然后给出n,m,n代表有几个挂钩,挂钩给出负数代表在左臂的距离,正数则在右臂m代表有m ...

  3. Lattice Diamond 的学习之新建工程

    1).打开软件 在软件打开后的初始布局会有一个Start  page 可以创建.打开.导入一个ISPLEVER 工程. 2).建立工程:1,Start page 中Project --> NEW ...

  4. Java -- 找不到或无法加载主类

    原文:http://wenku.baidu.com/link?url=5nS1GEaePn-hmtAg6xXdJvtt9Z89JQsakhqSv8fambaJY2t9nKPtf3hXFpjW-BtD9 ...

  5. C#学习笔记--详解委托,事件与回调函数

    .Net编程中最经常用的元素,事件必然是其中之一.无论在ASP.NET还是WINFrom开发中,窗体加载(Load),绘制(Paint),初始化(Init)等等.“protected void Pag ...

  6. Linux系统监控命令及如何定位到Java线程

    >>PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID ...

  7. 名词解释——Ext JS4

    Ext.onReady——Ext主入口,和onload事件不同,不需要页面所有东西加在出来. Ext js 的基本语法就是使用树状图来配置对象来定义界面: { config_options1:valu ...

  8. 重温WCF之发送和接收SOAP头(三)

    SOAP头可以理解为一种附加信息,就是附加到消息正文的内容. 既然消息头是附加信息,那有啥用呢?你可别说,有时候还真有不少用处.举个例子,WCF的身份验证是不是很麻烦?还要颁发什么证书的(当然不是荣誉 ...

  9. ASP.NET Web API 全局权限和全局异常处理

    在开发中,我使用json格式序列化,所以将默认的xml序列化移除 public static class WebApiConfig { public static void Register(Http ...

  10. ThinkPHP中使用ajaxReturn进行ajax交互

    以管理员登录为例来介绍下$this->ajaxReturn与模板页进行ajax交互使用方法 首先看PHP控制器的处理,在application/Admin/Controller/LoginCon ...