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

