使用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

  

posted @ 2015-09-24 09:53  sixindev  阅读(499)  评论(0编辑  收藏  举报