//本人只是提供一个思路,代码还需进一步完善(欢迎大牛小牛指点)
#import "CircleView.h"
@interface CircleView()
@property(nonatomic,strong)CABasicAnimation *rotationAnimation;
@end
#define degreesToRadians(x) (M_PI*(x)/180.0) //把角度转换成PI的方式
#define PROGREESS_WIDTH self.frame.size.width //圆直径
#define PROGRESS_LINE_WIDTH 6 //弧线的宽度
@implementation CircleView
-(instancetype)initWithFrame:(CGRect)frame{
self=[super initWithFrame:frame];
self.backgroundColor=[UIColor clearColor];
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ];
rotationAnimation.duration = 1;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = MAXFLOAT;
[self.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
self.rotationAnimation=rotationAnimation;
return self;
}
- (void)drawRect:(CGRect)rect {
CAGradientLayer * gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = rect;
gradientLayer.colors = @[(__bridge id)[[UIColor blackColor]colorWithAlphaComponent:0.1].CGColor,(__bridge id)[[UIColor whiteColor]colorWithAlphaComponent:0.3].CGColor,(__bridge id)[[UIColor whiteColor]colorWithAlphaComponent:0.5].CGColor,(__bridge id)[[UIColor whiteColor]colorWithAlphaComponent:0.6].CGColor,(__bridge id)[[UIColor whiteColor]colorWithAlphaComponent:0.8
].CGColor,(__bridge id)[[UIColor whiteColor]colorWithAlphaComponent:1.0].CGColor];
gradientLayer.startPoint = CGPointMake(0.1,0.0);
gradientLayer.endPoint = CGPointMake(1,0.5);
gradientLayer.locations=@[@0.15,@0.3,@0.45,@0.6,@0.75,@0.9];
self.layer.mask=gradientLayer;
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(PROGREESS_WIDTH/2, PROGREESS_WIDTH/2) radius:(PROGREESS_WIDTH-PROGRESS_LINE_WIDTH)/2 startAngle:degreesToRadians(-160) endAngle:degreesToRadians(80) clockwise:YES]; //画弧线
//center:弧线中心点的坐标,radius:弧线所在圆的半径, startAngle:弧线开始的角度值,endAngle:弧线结束的角度值 closewise:是否顺时针画弧线
path.lineCapStyle=kCGLineCapRound;
path.lineJoinStyle=kCGLineJoinRound;
path.lineWidth=PROGRESS_LINE_WIDTH;
UIColor *color=[UIColor redColor];
[color setStroke];
[path stroke];//连线
}
@end
//使用
CircleView *view=[[CircleView alloc]init];
view.frame=CGRectMake(100, 100, 50, 50);
[self.view addSubview:view];