今天产品要弄一个圆形的进度条

1532512706923.jpg

有很多开源的进度条不用,非要弄这种效果,就不吐槽了,还是想想怎么实现

废话就不多说了 直接上代码

#import

@interface RoundProgressView : UIView

/**进度条颜色*/

@property (strong, nonatomic) UIColor *progressColor;

/**dash pattern*/

@property (strong, nonatomic) NSArray *lineDashPattern;

/**进度Label字体*/

@property (strong, nonatomic) UIFont *progressFont;

- (void)updateProgress:(CGFloat)progress;

@end

#import "RoundProgressView.h"

#define kBorderWith 10

#define center CGPointMake(self.bounds.size.width / 2.0, self.bounds.size.height / 2.0)

@interface RoundProgressView()

@property (strong, nonatomic) CAShapeLayer *outLayer;

@property (strong, nonatomic) CAShapeLayer *progressLayer;

@property (strong, nonatomic) UILabel *progressLabel;

@end

@implementation RoundProgressView

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

// Drawing code

}

*/

- (instancetype)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

[self drawProgress];

}

return self;

}

-(void)drawProgress{

UIBezierPath *loopPath = [UIBezierPath bezierPathWithArcCenter:center radius:(self.bounds.size.width - kBorderWith)/ 2.0 startAngle:-M_PI_2 endAngle:M_PI * 3.0 / 2.0 clockwise:YES];

// 外圈

self.outLayer = [CAShapeLayer layer];

self.outLayer.strokeColor = [UIColor lightGrayColor].CGColor;

self.outLayer.lineWidth = kBorderWith;

self.outLayer.fillColor = [UIColor clearColor].CGColor;

self.outLayer.path = loopPath.CGPath;

[self.layer addSublayer:self.outLayer];

// 进度条

self.progressLayer = [CAShapeLayer layer];

self.progressLayer.fillColor = [UIColor clearColor].CGColor;

self.progressLayer.strokeColor = [UIColor blackColor].CGColor;

self.progressLayer.lineWidth = kBorderWith;

self.progressLayer.strokeStart = 0;

self.progressLayer.strokeEnd = 0;

self.progressLayer.path = loopPath.CGPath;

[self.layer addSublayer:self.progressLayer];

// 进度Label

self.progressLabel = [UILabel new];

self.progressLabel.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);

self.progressLabel.font = [UIFont systemFontOfSize:40];

self.progressLabel.textAlignment = NSTextAlignmentCenter;

[self addSubview:self.progressLabel];

}

- (void)updateProgress:(CGFloat)progress {

[CATransaction begin];

[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];

[CATransaction setAnimationDuration:0.5];

self.progressLayer.strokeEnd = progress / 100.0;

[CATransaction commit];

self.progressLabel.text = [NSString stringWithFormat:@"%.0f",progress];

}

- (void)setLineDashPattern:(NSArray *)lineDashPattern

{

_lineDashPattern = lineDashPattern;

self.outLayer.lineDashPattern = lineDashPattern;

self.progressLayer.lineDashPattern = lineDashPattern;

}

- (void)setProgressColor:(UIColor *)progressColor

{

self.progressLayer.strokeColor = progressColor.CGColor;

self.progressLabel.textColor = progressColor;

}

- (void)setProgressFont:(UIFont *)progressFont

{

self.progressLabel.font = progressFont;

}

调用

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

self.progressView =[[RoundProgressView alloc]initWithFrame:CGRectMake((ScreenWidth - 200)/2, 100, 200, 200)];

self.progressView.backgroundColor = [UIColor yellowColor];

[self.progressView setProgressColor:[UIColor blueColor]];

self.progressView.lineDashPattern = @[@(8),@(5)];

self.progressView.progressFont = [UIFont systemFontOfSize:70];

[self.view addSubview:self.progressView];

}

- (void)viewDidAppear:(BOOL)animated

{

[super viewDidAppear:animated];

[self.progressView updateProgress:25];

}

ios弧形进度条_ios 圆形进度条相关推荐

  1. Android 之 ProgressDialog用法介绍(矩形进度条 和 圆形 进度条)

    2019独角兽企业重金招聘Python工程师标准>>> 布局文件: <LinearLayout xmlns:android="http://schemas.andro ...

  2. 前端 圆形进度图_Highcharts 圆形进度条式测量图

    Highcharts 圆形进度条式测量图 以下实例演示了圆形进度条式测量图. 我们在前面的章节已经了解了 Highcharts 基本配置语法.接下来让我们来看下其他的配置. 配置 chart.type ...

  3. android 圆形拖动条,Android圆形进度条自定义

    自定义圆形进度条 示例.png 示例 (2).png 示例 (3).png 示例 (4).png 实现 override fun onSizeChanged(w: Int, h: Int, oldw: ...

  4. Flutter进度条Flutter圆形进度条Flutter条形进度条Flutter Progress进度条LinearProgressIndicator

    更多文章请查看 flutter从入门 到精通 Flutter Progress 1 条形无固定值进度条 //LinearProgressIndicator不具备设置高度的选项,可以使用SizedBox ...

  5. 前端 圆形进度图_js圆形进度的实现,可以自定义进度图标

    需求是下图这样,是一个环形进度条.最前面还有个自定义的图标.搜了很多各种环形进度,前面有自定义图标的不多,记录一下 html文件代码: 首页 重新开始 $(function () { var run ...

  6. 异步下载圆形进度条显示进度

    圆形进度条参考链接即可:使用css3实现圆形进度条 需求点击下载后遮罩层显示下载进度: 1.圆形进度条参考以上链接,有点小瑕疵,可更改定位距离实现重合. 2.遮罩层: .lbOverlay{ disp ...

  7. unity 超简单的圆形进度条

    1.首先在Canves下创建一个Image组件,将进度条的图片赋值 2.修改image组件,将Image Type修改为Filled,Fill Method 修改为Radial 360,Fill Or ...

  8. 自定义绘制圆形进度条

    自定义圆形进度条 Android 圆形进度条控件 demo示例 1.定义 attrs.xml <?xml version="1.0" encoding="utf-8 ...

  9. android 进度条 代码,Android进度条ProgressBar的实现代码

    ProgressBar进度条 当一个应用在后台执行时,前台界面不会有任何信息,这时,用户根本不知道程序是否在执行以及执行的进度等, 因此需要使用进度条来提示程序执行的进度. 而ProgressBar就 ...

最新文章

  1. 做项目遇到问题 2 AWS NLP 剽窃RuntimeError: size mismatch, m1: [10 x 3], m2: [2 x 10]检测部署报错
  2. vc 6.0常见编译错误及改正方法
  3. react-native 安卓模拟器安卓_windows
  4. HDFS的读文件、写文件过程
  5. C++ Primer 5th笔记(chap 16 模板和泛型编程)默认模板实参
  6. 总体方差的充分统计量_R方是否衡量预测能力或统计充分性?
  7. No.1-Apache IoTDB 随笔 - Time Series DBMS 综述
  8. Node.js 线程你理解的可能是错的
  9. 山西好点的计算机专科学校排名及分数线,2019-2020山西专科学校排名及分数线(理科+文科)...
  10. java不能对什么类型进行转换_@Value - 无法将类型'java.lang.String'的值转换为所需类型'java.lang.Integer'...
  11. 视频教程-微信小程序开发实战第三季-微信开发
  12. 微信小程序用什么工具开发(微信小程序开发工具介绍)
  13. 微信PC版的API接口
  14. 【OpenCV 例程200篇】203. 伪彩色图像处理
  15. MATLAB中将数字转换成罗马数字
  16. apache实验报告 linux_Apache服务器配置实验报告
  17. 研发人员的几个典型性格特征
  18. 04 带宽管理的队列规定
  19. Android记事本
  20. 银行存款利率C语言程序设计,存款利息的计算 有1000元,想存5年,可按以下5种办法存:...

热门文章

  1. 2018 青岛网络赛C题Halting Problem
  2. 绝对强大的三个LINUX指令: AR, NM, OBJDUMP
  3. Java平滑处理什么意思_为何要进行数据平滑处理?
  4. bs4是python自带的吗_Python bs4,检查类是否有值
  5. JAVASCRIPT校验大全
  6. Mybatis学习第四天——一对一一对多
  7. mac版sublime 无法下载插件(Vue 代码无高亮问题)
  8. Codeforces div2 #499 B. Planning The Expedition 大水题
  9. vue时间控件美化成IOS样式(移动端),vux组件datatime添加星期几/周几教程
  10. 独立开发人员的自由之路 ——1