UISlider提供了一个CGFloat的CGRange的范围的选择器,就是说给定一个CGRange,然后我们可以从中选择一个点。
其选择器样式如下:
上面这个样式当然不是iOS 7的自身样式,是经过一次定制后的。
UISlider跟UISwitch有点儿类似,都是继承自UIControl,这里步骤就跟UISwitch一样了,创建一个UISlider对象,然后将UISlider对象添加到一个UIView视图中。
既然UISlider是表示一个CGRange,那么就有一个最大值(maximumValue)和一个最小值(minimumValue),既然UISlider又是一个选择器,那么就有一个当前的选择值(value),这三个值都是UISlider的属性。
同样的,UISlider选择器被改变时,会触发UIControlEventValueChanged的事件,所以我们可以通过添加addTarget:::方法为事件添加处理方法。
就如前面所说,上面所展示的UISlider的样式是经过定制了的,所以我们同样可以定制一个UISlider的样式,样式同样有只更改颜色的样式和图片样式,更改UISlider的样式主要更改三部分:minimumTrackTintColor、maximumTrackTintColor和thumbTintColor。他们分别在UISlider对应的位置如下:
代码事例:
//// XCViewController.m// UISlider的基础知识//// Created by Mr. Right on 13-10-17.// Copyright (c) 2013年 XCoder Studio. All rights reserved.// #import "XCViewController.h" @interface XCViewController () @property (nonatomic, strong)UISlider * mySlider;@property (nonatomic, strong)UILabel * myLabel; @end @implementation XCViewController - (void)viewDidLoad{ [super viewDidLoad]; // 创建一个UISlider _mySlider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 200, 23)]; // 定位UISlider的位置 _mySlider.center = self.view.center; // 设置UISlider的最小值和最大值 _mySlider.minimumValue = 2; _mySlider.maximumValue = 50; // 设置UISlider的初始值 _mySlider.value = 12; // 为UISlider添加事件方法 [_mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged]; // 定义UISlider的样式 _mySlider.minimumTrackTintColor = [UIColor redColor]; _mySlider.maximumTrackTintColor = [UIColor greenColor]; _mySlider.thumbTintColor = [UIColor blueColor]; // 新建一个UILabel对象 _myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 320, 50)]; // 设置这个UILabel对象的字体为系统字体,大小为当前UISlider的值 _myLabel.font = [UIFont systemFontOfSize:_mySlider.value]; _myLabel.text = @"XCoder Studio"; // 将UISlider添加到一个UIView视图中 [self.view addSubview:_mySlider]; // 将UILabel添加到一个UIView视图中 [self.view addSubview:_myLabel];} - (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.} - (void)sliderValueChanged:(id)sender { if ([sender isKindOfClass:[UISlider class]]) { UISlider * slider = (UISlider *)sender; _myLabel.font = [UIFont systemFontOfSize:slider.value]; }} @end