CAShapeLayer绘画圆环,圆环进度条

来源:互联网 发布:海美迪网络机顶盒价格 编辑:程序博客网 时间:2024/04/29 00:58

//

//  WZKView.m

//  WZKTestSvn

//

//  Created by psylife on 15/10/9.

//  Copyright © 2015 psylife. All rights reserved.

//


#import "WZKView.h"


@implementation WZKView


/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

    // Drawing code

}

*/

/*

 jiaoDu  大圆环角度(一般是一个圆形M_PI*2

 startAngle  大圆环开始的位置

 endAngle 大圆环结束的位置

 fillColor 大圆环填充的颜色

 

 strokeColor 划线的颜色

 

 lineWidth 划线的线宽

 

 strokeStart 划线开始位置

 

 strokeEnd 划线结束位置

 

 radius 划线的半径(也就是大圆环的半径,划线和大圆环是一起的,只是填充颜色不同显的不一样,导致就像两个一样)

 */

-(CAShapeLayer*)huanXingJiaoDu:(CGFloat)jiaoDu startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle tianChongColor:(UIColor*)fillColor huaXianColor:(UIColor*)strokeColor lineWidth:(CGFloat)lineWidth huaKaiShi:(CGFloat)strokeStart huaJieShu:(CGFloat)strokeEnd huaxianradius:(CGFloat)radius donghuaDuration:(CGFloat)duration

{

    UIBezierPath* path = [UIBezierPathbezierPathWithArcCenter:CGPointMake(self.frame.size.width/2.f,self.frame.size.height/2.f)radius:radius startAngle:startAngleendAngle:jiaoDu clockwise:YES];

    CAShapeLayer* layer = [CAShapeLayerlayer];

    layer.frame = self.bounds;

    layer.path = path.CGPath;

    layer.strokeColor = strokeColor.CGColor;

    layer.fillColor = fillColor.CGColor;

    layer.lineCap =kCALineCapRound;

    layer.lineWidth = lineWidth;

    layer.strokeStart = strokeStart;

    layer.strokeEnd = strokeEnd;

    

    

    CABasicAnimation *ani = [CABasicAnimationanimationWithKeyPath : NSStringFromSelector (@selector (strokeEnd))];

    

    ani. fromValue = @0 ;

    

    ani. toValue = @1 ;

    

    ani. duration = duration ;

    

    [layer addAnimation :ani forKey : NSStringFromSelector ( @selector (strokeEnd))];

    

    return layer;

}

-(id)initWithFrame:(CGRect)frame

{

    self = [superinitWithFrame:frame];

    if (self !=nil) {

//        CAMetalLayer;

//        CAScrollLayer;

//        CAShapeLayer;

//        CATextLayer;

        CAShapeLayer* layer1 = [selfhuanXingJiaoDu:M_PI*2startAngle:0.0fendAngle:M_PI*2tianChongColor:[UIColorclearColor]huaXianColor:[UIColorredColor] lineWidth:4.0fhuaKaiShi:0.0fhuaJieShu:1.0fhuaxianradius:self.frame.size.width/2.0f+20donghuaDuration:5];

        


        [self.layeraddSublayer:layer1];

        [selfperformSelector:@selector(add2)withObject:nilafterDelay:5];

        [selfperformSelector:@selector(add3)withObject:nilafterDelay:5*2];

        [selfperformSelector:@selector(add4)withObject:nilafterDelay:5*3];

        [selfperformSelector:@selector(add5)withObject:nilafterDelay:5*4];

   

        

        

        

    }

    return  self;

}

-(void)add2

{

     CAShapeLayer* layer2 = [selfhuanXingJiaoDu:M_PI*2startAngle:0.0fendAngle:M_PI*2tianChongColor:[UIColorclearColor]huaXianColor:[UIColordarkGrayColor]lineWidth:4.0fhuaKaiShi:0.0fhuaJieShu:1.0fhuaxianradius:self.frame.size.width/2.0f+20-4donghuaDuration:5];

    [self.layeraddSublayer:layer2];

}

-(void)add3

{

       CAShapeLayer* layer3 = [selfhuanXingJiaoDu:M_PI*2startAngle:0.0fendAngle:M_PI*2tianChongColor:[UIColorclearColor]huaXianColor:[UIColoryellowColor]lineWidth:4.0fhuaKaiShi:0.0fhuaJieShu:1.0fhuaxianradius:self.frame.size.width/2.0f+20-8donghuaDuration:5];

    [self.layeraddSublayer:layer3];

}

-(void)add4

{

       CAShapeLayer* layer4 = [selfhuanXingJiaoDu:M_PI*2startAngle:0.0fendAngle:M_PI*2tianChongColor:[UIColorclearColor]huaXianColor:[UIColorblueColor] lineWidth:4.0fhuaKaiShi:0.0fhuaJieShu:1.0fhuaxianradius:self.frame.size.width/2.0f+20-12donghuaDuration:5];

    [self.layeraddSublayer:layer4];

}

-(void)add5

{

    CAShapeLayer* layer5 = [selfhuanXingJiaoDu:M_PI*2startAngle:0.0fendAngle:M_PI*2tianChongColor:[UIColorclearColor]huaXianColor:[UIColororangeColor]lineWidth:4.0fhuaKaiShi:0.0fhuaJieShu:1.0fhuaxianradius:self.frame.size.width/2.0f+20-16donghuaDuration:5];

    [self.layeraddSublayer:layer5];

}


@end


0 0