这篇博客主要是阐述四个继承于UIControl的视图控制器
首先介绍的是UISwitch, 人们习惯叫它开关.
如下图所示, 它就是UISwitch
- 创建一个开关, 注意其中frame的Width和height对switch不起作用, 它默认使用系统默认的大小
UISwitch *swi = [[UISwitch alloc] initWithFrame:CGRectMake(180, 400, 20, 20)];
[self.view addSubview:swi]; - 设置UISwitch的一些属性
- 开关开启后的背景颜色
swi.onTintColor = [UIColor orangeColor]; - 开关关闭状态下的边框颜色及开关切换时的颜色(null_resettable)
swi.tintColor = [UIColor redColor]; - 开关的按钮颜色
swi.thumbTintColor = [UIColor cyanColor]; - 开关开启/关闭时的图片(iOS7之后失效)
swi.onImage = [UIImage imageNamed:@"4"];
swi.offImage = [UIImage imageNamed:@"4"]; - 这个属性用来判断switchControl的开闭状态(YES为开启, NO为关闭)
- 可以通过setter方法, 改变UISwitch的初始状态
- 设置开关的初始状态, 如果setOn:后接YES, 则初始状态为开启, 反之也是.
[swi setOn:NO animated:YES];
- 给UISwitch添加事件
// 为UISwitch绑定事件
[swi addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];
// 实现绑定事件(判断条件为swi.on, 这个属性是用来判断开关的开闭的)
- (void)switchAction:(UISwitch *)swi {
if (swi.on == YES) {
NSLog(@"开");
} else {
NSLog(@"关");
}
}
下面介绍的是UISlider(俗称滑块), 它的作用是用于调节视频播放进度, 和音量的大小.
UISlider继承于UIControl, 它提供了一系列连续的值, 滑块停在不同的地方, 所返回的值也不同
-
UISlider
创建一个UISlider
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(20, 500, 374, 20)];
[self.view addSubview:slider];设置UISlider的属性
设置当前的slider的值
slider.value = 0.5;slider的最小值
slider.minimumValue = 0.0;slider的最大值
slider.maximumValue = 1.0;以上最大和最小可以根据情况调节
添加(最小值的那边)左边的图片
slider.minimumValueImage = [UIImage imageNamed:@"Unknown-2.png"];添加(最大值的那边)右边的图片
slider.maximumValueImage = [UIImage imageNamed:@"Unknown-5.png"];当为YES时, 滑块在滑动过程中每时每刻都在输出Value的值, 当为NO时, 滑块在滑动过程中不输出value的值, 只有松手的时候才输出value值
slider.continuous = NO;设置未划过的区域的颜色
slider.maximumTrackTintColor = [UIColor lightGrayColor];设置已划过的区域的颜色
slider.minimumTrackTintColor = [UIColor redColor];设置滑块按钮的颜色
slider.thumbTintColor = [UIColor cyanColor];设置进度条滑块右边的图片
[slider setMaximumTrackImage:[UIImage imageNamed:@"player_slider_playback_right.png"] forState:UIControlStateNormal];设置进度条滑块左边的图片
[slider setMinimumTrackImage:[UIImage imageNamed:@"player_slider_playback_left.png"] forState:UIControlStateNormal];设置进度条滑块的图片
[slider setThumbImage:[UIImage imageNamed:@"player_slider_playback_thumb.png"] forState:UIControlStateNormal];slider的绑定事件
// 绑定事件
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
// 实现slider的绑定事件
- (void)sliderAction:(UISlider *)slider {
NSLog(@"%0.2f", slider.value);
}
下面介绍UISegmentedControl的使用
- UISegmentedControl是一个分段控制器, 每一个item都能被点击, 它相当于一排UIButton
-
UISegmentedControl的显示效果如下图
- UISegmentedControl(分段控制器)
- UISegmentedControl的创建
UISegmentedControl *segMent = [[UISegmentedControl alloc] initWithItems:@[@"first", @"second", @"last"]]; - segment不给frame, 系统会自动计算大小
// 打印当前segment的frame
NSLog(@"segment的frame大小 = %@", NSStringFromCGRect(segMent.frame));
// 设置segment的frame
segMent.frame = CGRectMake(20, 50, 374, 40);
[self.view addSubview:segMent]; - 设置segMent的点击效果, 默认是NO, 当为YES时, 点击效果为变换背景色闪烁一下然后恢复原样, 为NO时, 只是变换背景色, 不闪烁.
segMent.momentary = NO; - 分段控制器的items的个数
NSInteger number = segMent.numberOfSegments; - 在segment中的指定下标下插入一个标题或者图片作为segment的item
[segMent insertSegmentWithImage:[UIImage imageNamed:@"Unknow.png"] atIndex:0 animated:YES];
[segMent insertSegmentWithTitle:@"插入一个标题" atIndex:0 animated:YES]; - 移除指定下标对应的segment的item
[segMent removeSegmentAtIndex:0 animated:YES]; - 移除全部的segment的item
[segMent removeAllSegments]; - 给segMent的边框和选中后的背景颜色, 字体颜色赋予一个颜色
segMent.tintColor = [UIColor orangeColor]; - selectedSegmentIndex表示segment当前选中的下标
segMent.selectedSegmentIndex = 1; - 修改segMent指定下标对应的标题
[segMent setTitle:@"lala" forSegmentAtIndex:0]; - 设置对应下标下的segment的item的图片
[segMent setImage:[UIImage imageNamed:@"UnKonw.png"] forSegmentAtIndex:0]; - 给某个下标下的标题重新设置宽度
[segMent setWidth:0 forSegmentAtIndex:0]; - 设置对应下标内容的偏移
[segMent setContentOffset:CGSizeMake(0, 0) forSegmentAtIndex:0]; - segMent对应下标是否能选中(YES能, NO不能)
[segMent setEnabled:YES forSegmentAtIndex:0]; - 如果分段控制器的段宽为0时, 并且该属性为YES, 系统会自动计算内容的宽度, 并调整segment每一个item的宽度
segMent.apportionsSegmentWidthsByContent = YES; - 给segMent添加事件
[segMent addTarget:self action:@selector(segMentAction:) forControlEvents:UIControlEventValueChanged]; - 实现segMen的绑定事件
- (void)segMentAction:(UISegmentedControl *)segMent {
switch (segMent.numberOfSegments) {
case 1:
NSLog(@"第一个");
break;
case 2:
NSLog(@"第二个");
break;
case 3:
NSLog(@"第三个");
break;
default:
break;
}
}
下面介绍UIPageControl
- UIPageControl类提供一行点来指示当前显示的是多页面视图的哪一页, 当用户界面需要按页面显示时, 使用UIPageControl控件将要显示的用户界面内容分页进行显示会使编程工作变得更加方便快捷.
-
显示效果如图
- UIPageControl (分页控制器)
- 创建UIPageControl
UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(50, 250, 300, 50)];
[self.view addSubview:pageControl]; - 设置分页控制器的页数(默认为0)
pageControl.numberOfPages = 10; - 分页控制器的当前页(默认为0)
pageControl.currentPage = 0; - 设置分页控制器点的颜色
pageControl.pageIndicatorTintColor = [UIColor greenColor]; - 当分页控制器只有一页的时候(YES, 隐藏分页控制器)默认是NO(不隐藏)
pageControl.hidesForSinglePage = YES; - 关闭系统事件page的切换显示效果(YES的时候), 并且直到调用updateCurrentPageDisplay这个方法, 才会显示
pageControl.defersCurrentPageDisplay = YES; - 获取点的大小
CGSize size = [pageControl sizeForNumberOfPages:0];
NSLog(@"%@", NSStringFromCGSize(size)); - 当前页的点的颜色
pageControl.currentPageIndicatorTintColor = [UIColor redColor]; - 给pageControl绑定事件
[pageControl addTarget:self action:@selector(pageControlChange:) forControlEvents:UIControlEventValueChanged];
} - 实现pageControl的绑定事件()
- (void)pageControlChange:(UIPageControl *)pageControl {
NSLog(@"点了");
// 更新当前页码
[pageControl updateCurrentPageDisplay];
}
以上内容就是四个控件的基础使用方法, 希望对大家有帮助!
友情提示: 不要胡乱的粘贴代码, 因为有一些属性之间是有冲突的, 希望愿意看的童鞋们一行一行的去敲!