我的iOS学习历程 - UISlider(简单的设置一组图片动画)

今天我们学习的是UISlider,就是平时看视频听音乐等的进度条的设置

今天设置的slider是控制播放一组图片速度的例子:

1.初始化以及设置一些属性

// 初始化
    UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(50, 50, 300, 30)];
// 设置背景色
    slider.backgroundColor = [UIColor grayColor];
// 设置最小值轨迹颜色
    [slider setMinimumTrackTintColor:[UIColor greenColor]];
// 设置最大值轨迹颜色
    [slider setMaximumTrackTintColor:[UIColor purpleColor]];
// 设置拖动按钮颜色
    [slider setThumbTintColor:[UIColor brownColor]];
// 设置图片
    [slider setMinimumValueImage:[UIImage imageNamed:@"01-refresh"]];
    [slider setMaximumValueImage:[UIImage imageNamed:@"03-loopback"]];
    [slider setThumbImage:[UIImage imageNamed:@"01-refresh"] forState:UIControlStateNormal];
    [slider setThumbImage:[UIImage imageNamed:@"02-redo"] forState:UIControlStateHighlighted];
    [slider setThumbImage:[UIImage imageNamed:@"03-loopback"] forState:UIControlStateSelected];
// 设置滑块的初值 最大值 最小值
// 如果想设置初始位置 需要先把最大 最小值设置上
// 再给初值 才会发生变化
    slider.minimumValue = 0;
    slider.maximumValue = 10;
    slider.value = 10;

2.添加滑动事件(重要的,需要通过添加事件来关联)

[slider addTarget:self action:@selector(sliderClick:) forControlEvents:UIControlEventValueChanged];

事件的实现(预先添加了图片,然后设置播放完一组照片的时间为slider的值来联系起来)

- (void)sliderClick:(UISlider *)slider
{
    UIImageView *imageView = (UIImageView *)[self.view viewWithTag:1000];
    if (slider.value == slider.maximumValue) {
        // 为了美观 停止的时候 添加一张占位图
        [imageView stopAnimating];
        imageView.image = [UIImage imageNamed:@"005.jpg"];
    }else{
    //  把播放玩一组照片的时间与slider的值联系起来
        imageView.animationDuration = slider.value;
        [imageView startAnimating];
    }
}

3.设置一组图片动画

// imageView
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 500)];
    imageView.backgroundColor = [UIColor purpleColor];
    imageView.tag = 1000;
    [self.view addSubview:imageView];
    [imageView release];

// 构建一个图片的数组
    NSMutableArray *arr = [NSMutableArray array];
    for (int i = 1; i <= 10; i++) {
        // 把图片的名字拼接出来
        NSString *imageName = [NSString stringWithFormat:@"%d.jpg",i];
        // 初始化每一张图片
        UIImage *image = [UIImage imageNamed:imageName];
        // 把图片添加到数组里
        [arr addObject:image];
    }

// 设置imageView的播放动画的数组
    imageView.animationImages = arr;
// 设置时间间隔(播放完整一次10秒)
    imageView.animationDuration = 10;
// 设置重复次数(零代表无限次)
    imageView.animationRepeatCount = 0;
// 让动画开始
    [imageView startAnimating];    
}

最后一个是倒计时的实例:

点击一个发送验证码的按钮进行倒计时

- (void)viewDidLoad {
    [super viewDidLoad];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(100, 100, 100, 100);
    button.backgroundColor = [UIColor purpleColor];
    button.tag = 100;
    [button setTitle:@"发送验证码" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];

// 设置倒计时初值
    self.number = 5;

}

- (void)buttonClick:(UIButton *)button
{
    // 倒计时核心 每隔 一秒钟 时间递减
    // 计时器(每隔多少时间 调用一个方法)
    // (NSTimeInterval) 代表时间间隔
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:@"button倒计时" repeats:YES];
    // 计时器开始
    [timer fire];
    button.userInteractionEnabled = NO;

}

- (void)timerAction:(NSTimer *)timer
{
    // 改button的标题
    UIButton *button = (UIButton *)[self.view viewWithTag:100];
    NSString *buttonTitle = [NSString stringWithFormat:@"%ld",self.number--];
    [button setTitle:buttonTitle forState:UIControlStateNormal];
// 判断倒计时是否结束(标题是否为0)
    if ([[button titleForState:UIControlStateNormal] isEqualToString:@"0"]) {
        // 停止计时器
        [timer invalidate];
        // 更改标题
        [button setTitle:@"发送验证码" forState:UIControlStateNormal];
        // 打开交互
        button.userInteractionEnabled = YES;
        // 重置时间
        self.number = 5;

    }

}

posted on 2015-11-21 10:59  彩虹直至黑白  阅读(399)  评论(0编辑  收藏  举报

导航