ios弧形进度条_ios 圆形进度条
今天产品要弄一个圆形的进度条
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 圆形进度条相关推荐
- Android 之 ProgressDialog用法介绍(矩形进度条 和 圆形 进度条)
2019独角兽企业重金招聘Python工程师标准>>> 布局文件: <LinearLayout xmlns:android="http://schemas.andro ...
- 前端 圆形进度图_Highcharts 圆形进度条式测量图
Highcharts 圆形进度条式测量图 以下实例演示了圆形进度条式测量图. 我们在前面的章节已经了解了 Highcharts 基本配置语法.接下来让我们来看下其他的配置. 配置 chart.type ...
- android 圆形拖动条,Android圆形进度条自定义
自定义圆形进度条 示例.png 示例 (2).png 示例 (3).png 示例 (4).png 实现 override fun onSizeChanged(w: Int, h: Int, oldw: ...
- Flutter进度条Flutter圆形进度条Flutter条形进度条Flutter Progress进度条LinearProgressIndicator
更多文章请查看 flutter从入门 到精通 Flutter Progress 1 条形无固定值进度条 //LinearProgressIndicator不具备设置高度的选项,可以使用SizedBox ...
- 前端 圆形进度图_js圆形进度的实现,可以自定义进度图标
需求是下图这样,是一个环形进度条.最前面还有个自定义的图标.搜了很多各种环形进度,前面有自定义图标的不多,记录一下 html文件代码: 首页 重新开始 $(function () { var run ...
- 异步下载圆形进度条显示进度
圆形进度条参考链接即可:使用css3实现圆形进度条 需求点击下载后遮罩层显示下载进度: 1.圆形进度条参考以上链接,有点小瑕疵,可更改定位距离实现重合. 2.遮罩层: .lbOverlay{ disp ...
- unity 超简单的圆形进度条
1.首先在Canves下创建一个Image组件,将进度条的图片赋值 2.修改image组件,将Image Type修改为Filled,Fill Method 修改为Radial 360,Fill Or ...
- 自定义绘制圆形进度条
自定义圆形进度条 Android 圆形进度条控件 demo示例 1.定义 attrs.xml <?xml version="1.0" encoding="utf-8 ...
- android 进度条 代码,Android进度条ProgressBar的实现代码
ProgressBar进度条 当一个应用在后台执行时,前台界面不会有任何信息,这时,用户根本不知道程序是否在执行以及执行的进度等, 因此需要使用进度条来提示程序执行的进度. 而ProgressBar就 ...
最新文章
- 做项目遇到问题 2 AWS NLP 剽窃RuntimeError: size mismatch, m1: [10 x 3], m2: [2 x 10]检测部署报错
- vc 6.0常见编译错误及改正方法
- react-native 安卓模拟器安卓_windows
- HDFS的读文件、写文件过程
- C++ Primer 5th笔记(chap 16 模板和泛型编程)默认模板实参
- 总体方差的充分统计量_R方是否衡量预测能力或统计充分性?
- No.1-Apache IoTDB 随笔 - Time Series DBMS 综述
- Node.js 线程你理解的可能是错的
- 山西好点的计算机专科学校排名及分数线,2019-2020山西专科学校排名及分数线(理科+文科)...
- java不能对什么类型进行转换_@Value - 无法将类型'java.lang.String'的值转换为所需类型'java.lang.Integer'...
- 视频教程-微信小程序开发实战第三季-微信开发
- 微信小程序用什么工具开发(微信小程序开发工具介绍)
- 微信PC版的API接口
- 【OpenCV 例程200篇】203. 伪彩色图像处理
- MATLAB中将数字转换成罗马数字
- apache实验报告 linux_Apache服务器配置实验报告
- 研发人员的几个典型性格特征
- 04 带宽管理的队列规定
- Android记事本
- 银行存款利率C语言程序设计,存款利息的计算 有1000元,想存5年,可按以下5种办法存:...
热门文章
- 2018 青岛网络赛C题Halting Problem
- 绝对强大的三个LINUX指令: AR, NM, OBJDUMP
- Java平滑处理什么意思_为何要进行数据平滑处理?
- bs4是python自带的吗_Python bs4,检查类是否有值
- JAVASCRIPT校验大全
- Mybatis学习第四天——一对一一对多
- mac版sublime 无法下载插件(Vue 代码无高亮问题)
- Codeforces div2 #499 B. Planning The Expedition 大水题
- vue时间控件美化成IOS样式(移动端),vux组件datatime添加星期几/周几教程
- 独立开发人员的自由之路 ——1