ios 画圆环进度条
来源:互联网 发布:二进制算法口诀 编辑:程序博客网 时间:2024/06/09 09:33
#import <UIKit/UIKit.h>@interface SNCircleProgressView : UIView/** * 进度值0-1.0之间 */@property (nonatomic,assign)CGFloat progressValue;/** * 边宽 */@property(nonatomic,assign) CGFloat progressStrokeWidth;/** * 进度条颜色 */@property(nonatomic,strong)UIColor *progressColor;/** * 进度条轨道颜色 */@property(nonatomic,strong)UIColor *progressTrackColor;@end#import "SNCircleProgressView.h"@interface SNCircleProgressView (){ CAShapeLayer *backGroundLayer; //背景图层 CAShapeLayer *frontFillLayer; //用来填充的图层 UIBezierPath *backGroundBezierPath; //背景贝赛尔曲线 UIBezierPath *frontFillBezierPath; //用来填充的贝赛尔曲线 }@end@implementation SNCircleProgressView@synthesize progressColor = _progressColor;@synthesize progressTrackColor = _progressTrackColor;@synthesize progressValue = _progressValue;@synthesize progressStrokeWidth = _progressStrokeWidth;- (instancetype)initWithCoder:(NSCoder *)aDecoder{ if (self = [super initWithCoder:aDecoder]) { [self setUp]; } return self;}- (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { [self setUp]; } return self;}/** * 初始化创建图层 */- (void)setUp{ //创建背景图层 backGroundLayer = [CAShapeLayer layer]; backGroundLayer.fillColor = nil; backGroundLayer.frame = self.bounds; //创建填充图层 frontFillLayer = [CAShapeLayer layer]; frontFillLayer.fillColor = nil; frontFillLayer.frame = self.bounds; [self.layer addSublayer:backGroundLayer]; [self.layer addSublayer:frontFillLayer];}- (void)setProgressColor:(UIColor *)progressColor{ _progressColor = progressColor; frontFillLayer.strokeColor = progressColor.CGColor;}- (UIColor *)progressColor{ return _progressColor;}- (void)setProgressTrackColor:(UIColor *)progressTrackColor{ _progressTrackColor = progressTrackColor; backGroundLayer.strokeColor = progressTrackColor.CGColor; backGroundBezierPath = [UIBezierPath bezierPathWithArcCenter:self.center radius:(CGRectGetWidth(self.bounds)-self.progressStrokeWidth)/2.f startAngle:0 endAngle:M_PI*2 clockwise:YES]; backGroundLayer.path = backGroundBezierPath.CGPath;}- (UIColor *)progressTrackColor{ return _progressTrackColor;}- (void)setProgressValue:(CGFloat)progressValue{ _progressValue = progressValue; frontFillBezierPath = [UIBezierPath bezierPathWithArcCenter:self.center radius:(CGRectGetWidth(self.bounds)-self.progressStrokeWidth)/2.f startAngle:-M_PI_4 endAngle:(2*M_PI)*progressValue-M_PI_4 clockwise:YES]; frontFillLayer.path = frontFillBezierPath.CGPath;}- (CGFloat)progressValue{ return _progressValue;}- (void)setProgressStrokeWidth:(CGFloat)progressStrokeWidth{ _progressStrokeWidth = progressStrokeWidth; frontFillLayer.lineWidth = progressStrokeWidth; backGroundLayer.lineWidth = progressStrokeWidth;}- (CGFloat)progressStrokeWidth{ return _progressStrokeWidth;}@end
#import "ViewController.h"#import "SNCircleProgressView.h"@interface ViewController (){ SNCircleProgressView *progressView;}@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; progressView = [[SNCircleProgressView alloc]initWithFrame:CGRectMake(40,80, 100, 100)]; progressView.progressColor = [UIColor redColor]; progressView.progressStrokeWidth = 5.f; progressView.progressTrackColor = [UIColor whiteColor]; [self.view addSubview:progressView]; [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(changeProgressValue) userInfo:nil repeats:YES]; }- (void)changeProgressValue{ progressView.progressValue += 0.1; if (progressView.progressValue>=1.f) { progressView.progressValue = 0.1f; }}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
阅读全文
0 0
- ios 画圆环进度条
- ios 画圆环进度条
- 圆环进度条
- 用Canvas画圆环百分比进度条
- CAShapeLayer绘画圆环,圆环进度条
- Unity圆环进度条制作
- h5圆环进度条
- 圆环形进度条
- 自定义圆环进度条
- canvas绘制圆环进度条
- 自定义圆环进度条
- 自定义PointerProgressBar--圆环进度条
- 自定义View圆环进度条
- 自定义view圆环进度条
- 自定义圆环进度条
- 渐变圆环进度条实现
- canvas绘制圆环进度条
- 属性动画+圆环进度条
- Kettle与taskctl比较
- 关于sprintf_s,弹出Expression:(“Buffer too small”,0)
- sgu223Little Kings(状压)
- python学习心得一(迭代)
- Vuforia实现触屏原地旋转物体的功能
- ios 画圆环进度条
- CSS3响应式布局
- MySQL数据库从windows迁移到linux
- SpringMVC学习笔记(十)
- JS函数前面加!、+、-、~符号以及;是什么意思、按位取反
- 剑指offer(1)—二维数组的查找
- spark-submit
- WM_MOUSEWHEEL 在PreTranslateMessage(MSG* pMsg)中MSG 的说明
- Android.mk 添加第三方静态库模板