使用CAShapeLayer做出圆形的进度条 —— #DF!
CircleView.h的内容如下: #import <UIKit/UIKit.h> @interface CircleView : UIView @property (nonatomic, assign) CGFloat startValue; @property (nonatomic, assign) CGFloat lineWidth; @property (nonatomic, strong) UIColor *lineColor; @property (nonatomic, assign) CGFloat value; @end =================== CircleView.m的内容如下: #import "CircleView.h" @interface CircleView () @property (nonatomic, strong) CAShapeLayer *shapeLayer; @end @implementation CircleView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { _shapeLayer = [CAShapeLayer layer]; _shapeLayer.frame = self.bounds; UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds]; _shapeLayer.path = path.CGPath; _shapeLayer.fillColor = [UIColor clearColor].CGColor; _shapeLayer.lineWidth = 1.f; _shapeLayer.strokeColor = [UIColor redColor].CGColor; _shapeLayer.strokeEnd = 0.f; [self.layer addSublayer:_shapeLayer]; } return self; } @synthesize startValue = _startValue; - (void)setStartValue:(CGFloat)startValue { _startValue = startValue; _shapeLayer.strokeEnd = startValue; } - (CGFloat)startValue { return _startValue; } @synthesize lineWidth = _lineWidth; - (void)setLineWidth:(CGFloat)lineWidth { _lineWidth = lineWidth; _shapeLayer.lineWidth = lineWidth; } - (CGFloat)lineWidth { return _lineWidth; } @synthesize lineColor = _lineColor; - (void)setLineColor:(UIColor *)lineColor { _lineColor = lineColor; _shapeLayer.strokeColor = lineColor.CGColor; } - (UIColor *)lineColor { return _lineColor; } @synthesize value = _value; - (void)setValue:(CGFloat)value { _value = value; _shapeLayer.strokeEnd = value; } - (CGFloat)value { return _value; } @end
作者:SIBU iOS DEV
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.