iOSDay24之UIControl及其子类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOSDay24之UIControl及其子类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6736字,纯文字阅读大概需要10分钟。
内容图文
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
内容总结
以上是互联网集市为您收集整理的iOSDay24之UIControl及其子类全部内容,希望文章能够帮你解决iOSDay24之UIControl及其子类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。