美文网首页
iOS自定义进度条

iOS自定义进度条

作者: 神SKY | 来源:发表于2018-04-16 15:10 被阅读364次

    前言

    我们在自定义进度条的时候,会遇到各种各样的样式,有在视图中加载的,也有放在外面的。通常这种时候有部分人会选择用UIView的动画和定时器来完成这个操作,但是用这种方式难免会有卡顿,在这里小编推荐用CAAnimation这个类来完成。分享一个小编自己集成的CAAnimation工具类。

    在这里,小编线上一波效果图,各位看官们可以看一下自己是否需要,如下:

    工具类

    虽然iOS支持混编,但是为了保证结构的一致性,小编还是写了OC和Swift两个版本的工具类SKShadowBarLayer,看官们可以根据自己的需求,去下方地址下载相应的版本。

    工具类下载地址

    使用方法

    1.导入库

    #import "SKShadowBarLayer.h"
    

    2.按照自己的需求设置相应的参数

    CGFloat width_Screen = [UIScreen mainScreen].bounds.size.width;
        CGFloat height_Screen = [UIScreen mainScreen].bounds.size.height;
        self.shadow = [SKShadowBarLayer new];
    //    设置颜色
        self.shadow.fillColor = [UIColor colorWithRed:25/255.0 green:25/255.0 blue:25/255.0 alpha:1.0].CGColor;
    //    设置大小
        [self.shadow setFrame:(CGRect){0, 0, width_Screen * 0.8, width_Screen * 0.8 / 32 * 15}];
    //    设置透明度
        self.shadow.opacity = 0.6;
        [self.imageView.layer addSublayer:self.shadow];
        
        self.layer = [SKShadowBarLayer new];
    //    设置颜色
        self.layer.fillColor = [UIColor redColor].CGColor;
        self.layer.backgroundColor = [UIColor blackColor].CGColor;
    //    设置大小
        [self.layer setFrame:(CGRect){width_Screen * 0.1, height_Screen / 2.5, width_Screen * 0.8, 20}];
    //    设置透明度
        self.layer.opacity = 1;
    
        [self.view.layer addSublayer:self.layer];
    

    3.调用相关方法

    - (IBAction)buttonAction:(UIButton *)sender {
        switch (sender.tag) {
            case 1:
                [self.shadow beginAnimationWithDuration:30];
                [self.layer beginAnimationWithDuration:30];
                break;
            case 2:
                [self.shadow pauseAnimation];
                [self.layer pauseAnimation];
                break;
            case 3:
                [self.shadow resumeAnimation];
                [self.layer resumeAnimation];
                break;
            case 4:
                [self.shadow restartAnimationWithDuration:30 progress:0];
                [self.layer restartAnimationWithDuration:30 progress:0];
                break;
            default:
                break;
        }
    }
    

    4.若要知道状态,可以绑定代理SKShadowBarLayerDelegate

    #pragma mark delegate
    - (void)animationDidStart {
        NSLog(@"开始");
    }
    - (void)animationDidStop {
        NSLog(@"停止");
    }
    - (void)animationDidComplete {
        NSLog(@"完成");
    }
    

    希望这篇文章对各位看官有所帮助,可在上方地址下载Demo.

    相关文章

      网友评论

          本文标题:iOS自定义进度条

          本文链接:https://www.haomeiwen.com/subject/gnhekftx.html