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对应的位置如下:
![UISlider的样式修改三部分](http://www.xcoder.cn/wp-content/uploads/2013/10/style.png)
代码事例:
//
// 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