1. UIControl初识
1> 概述
UIControl是有控制功能的视图( 如UIButton、UISlider、UISegmentedControl等)的父类
只要跟控制有关的控件都是继承于该类
UIControl这个类通常我们并不直接使用,而是使用其子类
2> 事件响应的三种形式 : 基于触摸 , 基于值 , 基于编辑
3> UIControl常用的方法
① 添加一个事件
- (void)addTarget:(nullable id)target action:(nullableSEL)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];
1011// 设置开关风格(样式)颜色12 firstSwitch.tintColor = [UIColor cyanColor];
1314// 设置开关按钮颜色15 firstSwitch.thumbTintColor = [UIColor purpleColor];
1617// 设置开关的状态18 firstSwitch.on = YES;
1920 [firstSwitch setOn:NO animated:YES];
2122// 3.添加点击事件23 [firstSwitch addTarget:self action:@selector(firstSwitchAction:) forControlEvents:UIControlEventTouchUpInside];
2425// 4.添加到父视图26 [self.rootView addSubview:firstSwitch];
点击事件
1
//
点击事件
2 - (void)firstSwitchAction:(UISwitch *)sender
3{
4if (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;
1011// 设置按钮的颜色12 self.mySlider.thumbTintColor = [UIColor redColor];
1314// 设置划过区域的颜色15 self.mySlider.minimumTrackTintColor = [UIColor cyanColor];
1617// 设置未划过区域的颜色18 self.mySlider.maximumTrackTintColor = [UIColor purpleColor];
1920 [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.布局分段选择器
2
3
//
1.1 创建对象
4 self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"女神", @"男神", @"程序员"]];
5 6 self.segmentedControl.frame = CGRectMake(57, 100, 300, 50);
7 8// 1.2 设置属性
910// 设置样式的颜色11 self.segmentedControl.tintColor = [UIColor redColor];
1213// 指定初始被选中的分段14 self.segmentedControl.selectedSegmentIndex = 0;
1516// 通过下标修改内容17 [self.segmentedControl setTitle:@"阿福" forSegmentAtIndex:2];
1819// 得到分段的个数(该数字readonly)20 NSLog(@"%ld", self.segmentedControl.numberOfSegments);
2122// 1.3 添加到父视图23 [self addSubview:self.segmentedControl];
2425// 2.布局图片26 self.myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, CGRectGetMaxY(self.segmentedControl.frame) + 50, 314, 450)];
2728// 设值默认图片29 self.myImageView.image = [UIImage imageNamed:@"ns.jpg"];
3031 [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{
7if (0 == sender.selectedSegmentIndex) {
8// 图片为女神 9 self.rootView.myImageView.image = [UIImage imageNamed:@"ns.jpg"];
10 } elseif (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];
1112// 指定页面个数(即点的个数)13 pageControl.numberOfPages = 5;
1415// 指定pageControl的值(即选中的点)
16// pageControl.currentPage = 1;
1718// 当页数只有一页时,就行隐藏,默认值为NO
19// pageControl.hidesForSinglePage = YES;
2021// pageControl.defersCurrentPageDisplay = YES;2223 [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;
6switch (pageIndex) {
7case0:
8 self.myView.backgroundColor = [UIColor redColor];
9break;
1011case1:
12 self.myView.backgroundColor = [UIColor grayColor];
13break;
1415case2:
16 self.myView.backgroundColor = [UIColor greenColor];
17break;
1819case3:
20 self.myView.backgroundColor = [UIColor lightGrayColor];
21break;
2223case4:
24 self.myView.backgroundColor = [UIColor blackColor];
25break;
2627default:
28break;
29 }
30 }
原文:http://www.cnblogs.com/gfxxbk/p/5377035.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!