• ios 画圆环进度条


    #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

  • 相关阅读:
    Flask的部署
    server 08 R2 NBL 报错:RPC 服务器在指定计算机上不可用
    Exchange 2010 打补丁的顺序
    批量创建域账号
    Exchange 正版化 授权
    邮件本地备份策略原则
    TMG 模拟公司网络架构要点
    webservice 测试地址
    PYDay10&11&12&13-常用模块:time|datetime|os|sys|pickle|json|xml|shutil|logging|paramiko、configparser、字符串格式化、py自动全局变量、生成器迭代器
    Python 编程要求
  • 原文地址:https://www.cnblogs.com/thbbsky/p/4516726.html
Copyright © 2020-2023  润新知