#import <UIKit/UIKit.h>@interface CirclePRogressView : UIView/**起始值(0-1)*/@property(nonatomic,assign)CGFloat fstartValue;/**邊框?qū)挾?/span>*/@property(nonatomic,assign)CGFloat flineWidth;/**線條顏色*/@property(nonatomic,strong)UIColor *lineColor;/**變化的值*/@property(nonatomic,assign)CGFloat fvalue;@end#import "CircleProgressView.h"@interface CircleProgressView (){ CAShapeLayer *_shapeLayer;}@end@implementation CircleProgressView@synthesize fstartValue=_fstartValue;@synthesize flineWidth=_flineWidth;@synthesize lineColor=_lineColor;@synthesize fvalue=_fvalue;- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { /**創(chuàng)建帶形狀的圖層*/ _shapeLayer=[CAShapeLayer layer]; _shapeLayer.frame = self.bounds; _shapeLayer.strokeEnd = 0.f; /*創(chuàng)建布賽爾曲線*/ UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds]; /**把圖層和不塞爾曲線通過path進(jìn)行關(guān)聯(lián)*/ _shapeLayer.path = path.CGPath; /**設(shè)置圖層的填充顏色、寬度、邊框顏色*/ _shapeLayer.fillColor = [UIColor clearColor].CGColor; _shapeLayer.lineWidth = 1.0f; _shapeLayer.strokeColor = [UIColor redColor].CGColor; [self.layer addSublayer:_shapeLayer]; } return self;}/** * @brief 重寫fstartValue的setter方法 * @param fstartValue 設(shè)置圓形strokeStart起始值 * @since */- (void)setFstartValue:(CGFloat)fstartValue{ _fstartValue = fstartValue; _shapeLayer.strokeStart = fstartValue; }- (CGFloat)fstartValue{ return _fstartValue;}/** * @brief 重寫flineWidth的setter方法 * @param flineWidth 設(shè)置圓形邊框?qū)挾?* @since */- (void)setFlineWidth:(CGFloat)flineWidth{ _flineWidth = flineWidth; _shapeLayer.lineWidth = flineWidth;}/** * @brief 重寫lineColor的setter方法 * @param lineColor 設(shè)置圓形邊框顏色 * @since */- (void)setLineColor:(UIColor *)lineColor{ _lineColor = lineColor; _shapeLayer.strokeColor = lineColor.CGColor;}- (UIColor *)lineColor{ return _lineColor;}/** * @brief 重寫fvalue的setter方法 * @param lineColor 設(shè)置圓形的strokeEnd值 * @since */- (void)setFvalue:(CGFloat)fvalue{ _fvalue = fvalue; _shapeLayer.strokeEnd = fvalue;}- (CGFloat)fvalue{ return _fvalue;}@end#import "ViewController.h"#import "CircleProgressView.h"@interface ViewController (){ CircleProgressView *progress;}@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; progress = [[CircleProgressView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)]; progress.center = self.view.center; progress.lineColor = [UIColor redColor]; progress.flineWidth = 1.0f; progress.fstartValue = 0; [self.view addSubview:progress]; [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(circleAnimation) userInfo:nil repeats:YES]; }- (void)circleAnimation{ progress.fvalue = arc4random()%100/100.f;}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; }@end
新聞熱點(diǎn)
疑難解答