当前位置:首页 > 操作系统 > Ios

iOSDay24之UIControl及其子类

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)!