Ring countdown progress bar for iOS development (dotted line/solid line), ios solid line
The code is very simple. It is clockwise. If you want to change clockwise to 0, you also need to change the start and end angles.
Source Code address: https://github.com/LfyDragon/CountDown
Code:-(void) drawRect :( CGRect) rect {
CAShapeLayer * shapeLayer = [CAShapeLayer layer]; shapeLayer. frame = self. bounds; UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter: CGPointMake (self. frame. size. width/2, self. frame. size. height/2) radius: self. frame. size. height/2 startAngle:-M_PI_2 endAngle: M_PI * 3/2 clockwise: 1]; shapeLayer. path = path. CGPath; shapeLayer. fillColor = [UIColor clearColor]. CGColor; shapeLayer. lineWidth = 10.0f; if ([self. flag isEqualToString: @ "track"]) {shapeLayer. strokeColor = [UIColor colorWithRed: 146/255. 0f green: 146/255. 0f blue: 146/255. 0f alpha: 1]. CGColor;} else {shapeLayer. strokeColor = [UIColor colorWithRed: 61/255. 0f green: 191/255. 0f blue: 135/255. 0f alpha: 1]. CGColor;} // The length of each dotted line is 2 and the interval is 3.The line is set as dotted line.
ShapeLayer. lineDashPattern = [NSArray arrayWithObjects: [NSNumber numberWithInt: 2], [NSNumber numberWithInt: 3], nil]; [self. layer addSublayer: shapeLayer]; if ([self. flag isEqualToString: @ "process"]) {CABasicAnimation * pathAnima = [CABasicAnimation animationWithKeyPath: @ "strokeEnd"]; pathAnima. duration = self. time; pathAnima. timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear]; pathAnima. fromValue = [NSNumber numberWithFloat: 0.0f]; pathAnima. toValue = [NSNumber numberWithFloat: 1.0f]; pathAnima. fillMode = kCAFillModeForwards; pathAnima. removedOnCompletion = NO; [shapeLayer addAnimation: pathAnima forKey: @ "strokeEndAnimation"] ;}}
Cut a chart at will: