UISlider继承UIControl,是一个可以在最小值和最大值之间任意滑动的进度条,和UIProgressView的区别在于:前前者无法响应用户的触摸事件,而后者可以。
我下了一个demo,相信的总结了一下UISlider 的使用方法
//
// ViewController.m
// UIProgressViewDemo
//
// Created by 冷凝 on 14-2-19.
// Copyright (c) 2014年 **. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
{
// UIProgressView * _progressView;
UISlider * _slider;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self addSlider];
//[self addProgressView];
}
-(void)addSlider{
_slider = [[UISlider alloc]initWithFrame:CGRectMake(10, 10, 300, 50)];
_slider.minimumValue = 0;
_slider.maximumValue = 100;
_slider.value = 50;
_slider.minimumValueImage = [UIImage imageNamed:@"meigui.png"];
_slider.maximumValueImage = [UIImage imageNamed:@"yongbao.png"];
_slider.minimumTrackTintColor = [UIColor blackColor];
//_slider.maximumTrackTintColor = [UIColor greenColor];
_slider.thumbTintColor = [UIColor orangeColor];
[_slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[_slider setThumbImage:[UIImage imageNamed:@"daku.png"] forState:UIControlStateNormal];//设置默认图片
[_slider setThumbImage:[UIImage imageNamed:@"chouyan.png"] forState:UIControlStateHighlighted];//设置移动时显示进度的图片
[self.view addSubview:_slider];
}
//根据值的变化来做判断
-(void)sliderValueChanged:(UISlider*)slider{
if (slider.value <= slider.maximumValue/2.0) {
slider.minimumTrackTintColor = [UIColor blackColor];
}else{
[slider setValue:90 animated:YES];
slider.minimumTrackTintColor = [UIColor redColor];
slider.maximumTrackTintColor = [UIColor blackColor];
}
}
为了供子类定制还提供了四个方法:看到函数名就知道函数的功能
// lets a subclass lay out the track and thumb as needed
- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds;
- (CGRect)maximumValueImageRectForBounds:(CGRect)bounds;
- (CGRect)trackRectForBounds:(CGRect)bounds;
- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value;