简单的实现环形比例图
来源:互联网 发布:ar看车源码 编辑:程序博客网 时间:2024/06/04 18:17
#import <UIKit/UIKit.h>
@interface ProportionLoopView : UIView
- (void)drawProgress:(CGFloat )progress withColor:(UIColor *)colorFirst color:(UIColor *)colorSecond;
@property (nonatomic,assign) CGFloat ringWidth;//环宽度
@end
#import "ProportionLoopView.h"
@interface ProportionLoopView ()
@property (nonatomic,assign) CGFloat progress;//比例 0~1
@property (nonatomic,strong) UIColor *colorOne;
@property (nonatomic,strong) UIColor *colorTwo;
@property (nonatomic,strong) CAShapeLayer *progressLayer;//环1
@property (nonatomic,strong) CAShapeLayer *progressLayerTwo;//环2
@end
@implementation ProportionLoopView
- (void)drawProgress:(CGFloat )progress withColor:(UIColor *)colorFirst color:(UIColor *)colorSecond{
_progress = progress;
_colorOne = colorFirst;
_colorTwo = colorSecond;
_progressLayer.opacity = 0;
_progressLayerTwo.opacity = 0;
[self setNeedsDisplay];
}
//初始化时执行
- (void)drawRect:(CGRect)rect {
[self drawCycleProgress];
}
//绘制
- (void)drawCycleProgress{
CGPoint center = CGPointMake(self.frame.size.width/2,self.frame.size.height/2);
CGFloat radius = self.frame.size.width/2 - _ringWidth/2;
CGFloat startA = - M_PI_2; //设置进度条起点位置
CGFloat endA = -M_PI_2 + M_PI * 2 * _progress; //设置进度条终点位置
//获取环形路径(画一个圆形,填充色透明,设置线框宽度为10,这样就获得了一个环形)
_progressLayer = [CAShapeLayer layer];//创建一个track shape layer
_progressLayer.frame = self.bounds;
_progressLayer.fillColor = [[UIColor clearColor] CGColor]; //填充色为无色
_progressLayer.strokeColor = [_colorOne CGColor]; //指定path的渲染颜色,这里可以设置任意不透明颜色
_progressLayer.opacity = 1;//背景颜色的透明度
//_progressLayer.lineCap = kCALineCapRound;//指定线的边缘是圆的
_progressLayer.lineWidth = _ringWidth;//线的宽度
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];//上面说明过了用来构建圆形
_progressLayer.path =[path CGPath]; //把path传递給layer,然后layer会处理相应的渲染,整个逻辑和CoreGraph是一致的。
[self.layer addSublayer:_progressLayer];
//获取环形路径(画一个圆形,填充色透明,设置线框宽度为10,这样就获得了一个环形)
_progressLayerTwo = [CAShapeLayer layer];//创建一个track shape layer
_progressLayerTwo.frame = self.bounds;
_progressLayerTwo.fillColor = [[UIColor clearColor] CGColor]; //填充色为无色
_progressLayerTwo.strokeColor = [_colorTwo CGColor]; //指定path的渲染颜色,这里可以设置任意不透明颜色
_progressLayerTwo.opacity = 1;//背景颜色的透明度
//_progressLayer.lineCap = kCALineCapRound;//指定线的边缘是圆的
_progressLayerTwo.lineWidth = 30;//线的宽度
UIBezierPath *pathtwso = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:endA endAngle:startA clockwise:YES];//上面说明过了用来构建圆形
_progressLayerTwo.path =[pathtwso CGPath]; //把path传递給layer,然后layer会处理相应的渲染,整个逻辑和CoreGraph是一致的。
[self.layer addSublayer:_progressLayerTwo];
}
@end
- 简单的实现环形比例图
- HTML+CSS 实现环形比例图效果
- HTML+CSS+jquery 实现环形比例图效果 AngularJS+css实现环形比例图效果
- 环形进度条的简单实现
- 环形进度条的简单实现
- 一个简单的环形缓冲区的实现
- 一个环形缓冲(ringbuf)的简单实现
- Echarts实现地图,环形图简单案例
- 简单环形队列实现
- 简单环形队列实现
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇
- 简单的环形进度
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---栈篇
- java 环形队列简单实现
- 234_自定义一个百分比例的环形饼状图
- JavaScript实现的环形图比较
- 环形缓冲区的实现
- 环形缓冲区的实现
- this、super、final关键字_学习体会
- Meteor Shower POJ
- ghost.py在代用JavaScript时的超时问题
- vijos 小胖守皇宫
- Reactor模型 三种模型 演变
- 简单的实现环形比例图
- 逃离迷宫(BFS)
- Oracle中CASE WHEN的用法实例
- POJ 3253 Fence Repair
- springboot+springdatajpa 数据库命名
- Static Proxy(静态代理)
- Android中post请求AsyncTask延时
- [NLP]使用LDA模型计算文档相似度
- PHP中->和=>的意思