iOS自定义进度条

前言

我们在自定义进度条的时候,会遇到各种各样的样式,有在视图中加载的,也有放在外面的。通常这种时候有部分人会选择用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.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容