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