</pre><p style="margin-top: 0px; margin-bottom: 0px; line-height: normal; font-family: Menlo;"><pre name="code" class="objc" style="color: rgb(75, 209, 87); font-size: 11px;">//
//  TextView.m
//  练习
//
//  Created by 王文杰 on 16/9/20.
//  Copyright © 2016年 王文杰. All rights reserved.
//#import "TextView.h"@implementation TextView// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {NSArray * Value = @[@"60",@"90",@"100",@"80",@"200",@"30"];NSArray * month = @[@"1月",@"2月",@"3月",@"4月",@"5月",@"6月"];//获取数据最大值float max = [[Value valueForKeyPath:@"@max.intValue"] floatValue];//计算坐标比例float value = 140/max;//循环创建柱状图for (int i = 0; i<Value.count; i++) {/***  //获得上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//第二个参数是x轴,第三个是y轴/起点CGContextMoveToPoint(ctx, 80+i*50, 200);//第二个参数是x轴,第三个是y轴/终点CGContextAddLineToPoint(ctx, 80+i*50, self.bounds.size.height-[[cost objectAtIndex:i] floatValue]*value);//设置绘图的颜色CGContextSetRGBStrokeColor(ctx, 1.0, 0.7, 0.3, 1.0);//设置线条的宽度CGContextSetLineWidth(ctx, 10);//设置线条的起点和终点的样式CGContextSetLineCap(ctx, kCGLineCapButt);//设置宽度CGContextSetLineWidth(ctx, 20);//绘制一条空心的线CGContextStrokePath(ctx);**  @return 第一种方法*/UIBezierPath *Polyline = [UIBezierPath bezierPath];//设置起点[Polyline moveToPoint:CGPointMake(80+i*50, 200)];//设置终点[Polyline addLineToPoint:CGPointMake(80+i*50,self.bounds.size.height-[[Value objectAtIndex:i] floatValue]*value)];//设置颜色[[UIColor clearColor] set];//设置宽度Polyline.lineWidth = 20;//添加到画布[Polyline stroke];//添加CAShapeLayerCAShapeLayer *shapeLine = [[CAShapeLayer alloc]init];//设置颜色shapeLine.strokeColor = [UIColor colorWithRed:0.400 green:1.000 blue:1.000 alpha:0.8].CGColor;//设置宽度shapeLine.lineWidth = 20.0;//把CAShapeLayer添加到当前视图CAShapeLayer[self.layer addSublayer:shapeLine];//把Polyline的路径赋予shapeLineshapeLine.path = Polyline.CGPath;//开始添加动画[CATransaction begin];//创建一个strokeEnd路径的动画CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];//动画时间pathAnimation.duration = 2.0;//添加动画样式pathAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];//动画起点pathAnimation.fromValue = @0.0f;//动画停止位置pathAnimation.toValue   = @1.0f;//把动画添加到CAShapeLayer[shapeLine addAnimation:pathAnimation forKey:@"strokeEndAnimation"];//动画终点shapeLine.strokeEnd = 1.0;//结束动画[CATransaction commit];//柱状图值UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(60+i*50, self.bounds.size.height-20-[[Value objectAtIndex:i] floatValue]*value, 40, 20)];label.text = [NSString stringWithFormat:@"%@",[Value objectAtIndex:i]];label.textAlignment = NSTextAlignmentCenter;label.font = [UIFont systemFontOfSize:11];[self addSubview:label];//x轴坐标UILabel * label1 = [[UILabel alloc]initWithFrame:CGRectMake(60+i*50, 200, 40, 20)];label1.text = [NSString stringWithFormat:@"%@",[month objectAtIndex:i]];label1.textAlignment = NSTextAlignmentCenter;label1.font = [UIFont systemFontOfSize:15];[self addSubview:label1];}//画x轴for (int i = 0; i<15; i++) {UIBezierPath *Polyline = [UIBezierPath bezierPath];//设置起点[Polyline moveToPoint:CGPointMake(0, 200-i*10)];//设置终点[Polyline addLineToPoint:CGPointMake(self.bounds.size.width,200-i*10)];//设置颜色[[UIColor grayColor] set];//设置宽度Polyline.lineWidth = 0.3;//添加到画布[Polyline stroke];}}@end

为了方便大家看的简单明白,所以代码比较粗糙,也没有封装,应为需求开发网上找了好多UIBezierPath的资料都看的不是很明白,所以自己研究了半天写出来给大家看看。

使用CAShapeLayer与UIBezierPath画动态柱状图相关推荐

  1. iOS通过CAShapeLayer和UIBezierPath画环形进度条

    UIBezierPath可以绘制矢量路径,而CAShapeLayer是Layer的子类,可以在屏幕进行绘制,本文主要思想是:CAShapeLayer按照UIBezierPath的矢量路径进行绘制. 效 ...

  2. 使用CAShapeLayer与UIBezierPath画出想要的图形

    使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 步骤: 1.新建UIBezierPath对象bezierPath 2.新建CAS ...

  3. iOS学习:CAShapeLayer与DrawRect对比,与UIBezierPath画图形

    使用CAShapeLayer有以下一些优点 渲染快速.CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多. 高效使用内存.一个CAShapeLayer不需要像普 ...

  4. 利用CAShapeLayer和UIBezierPath结合画梯形图

    1.在ViewController.m 中 初始化 画的图形的背景View view2 // 初始化父视图 UIView *view = [[UIView alloc]initWithFrame:CG ...

  5. CAShapeLayer和UIBezierPath

    一:贝塞尔曲线 UIBezierPath 使用UIBezierPath类可以创建基于矢量的路径,这个类再UIKit中.此类是Core Graphics框架关于path的一个封装.使用此类可以定义简单的 ...

  6. 【Python可视化】matplotlib画动态曲线

    matplotlib是python里最popular的画图工具,最近发现它可以用来画动态图.可以看看AI模型训练时候的loss曲线,accuracy变化等等.客观上,比tensorboard更简洁. ...

  7. 深入理解UIBezierPath画圆弧addArcWithCenter

    UIBezierPath画圆弧的方法 - (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFlo ...

  8. python可以画动态图吗_matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解

    学习python的道路是漫长的,今天又遇到一个问题,所以想写下来自己的理解方便以后查看. 在使用matplotlib的过程中,常常会需要画很多图,但是好像并不能同时展示许多图.这是因为python可视 ...

  9. Matplotlib画动态散点图:

    Matplotlib画动态散点图:  X=np.random.randint(0,512,20).tolist() Y=np.random.randint(0,512,20).tolist() pri ...

最新文章

  1. Hibernate关联关系映射实例速查
  2. python 类实例化理解
  3. ip route-static 命令的参数
  4. TObject简要说明-对象的创建流程
  5. 深度学习笔记第三门课 结构化机器学习项目 第二周 机器学习(ML)策略(2)...
  6. EnterpriseLibrary数据访问(4)使用数据访问器接收数据
  7. 输入法全屏_五笔输入法那么方便,为什么败给了拼音?如今,我可算是明白了...
  8. doc.update
  9. 【白皮书分享】2022年中国品质直播选型与应用白皮书.pdf(附下载链接)
  10. 一键清理C盘程序代码
  11. iOS包重签名工具,ipa文件重签名,快速签名,SignTool签名工具,好用的签名工具,App重签名
  12. 软件测试岗位面试经验分享
  13. 如何把多个pdf文件合并成一个pdf
  14. 切入点和切入点表达式(AOP面向切面编程)
  15. 隐含马尔可夫模型——Hidden Markov models (HMM)
  16. 数据库的故障及其恢复策略
  17. 在python中下列代码的运行结果是print abc_下列代码运行结果是?
  18. 中国工商银行网银不能识别U盾或打不开网页
  19. 使用示波器学习变压器
  20. php数据库自动引蜘蛛,SEO之小旋风万能站群池X5.1去限制版,引蜘蛛提高排名,免授权永久使用...

热门文章

  1. 单链表反转 | 不合法的路径地址转变为合法路径
  2. python 操作mysql数据库查询数据
  3. 学校计算机基础做慢了扣分,中职学校《计算机应用基础》课程改革的一点建议...
  4. 如何设置app字体跟随系统_Android 应用全局字体调节或禁止随系统字体大小更改...
  5. 唤醒时间过长 Android,关于android:功耗问题之过多唤醒源-wakeups
  6. D - Three Days Ago
  7. web服务器的相关配置
  8. win pear php7.1,windows上应用pear安装php扩展 - libevent
  9. Ubuntu 使用apt-get 安装MySQL
  10. 百度索引量与“site”结果是不是一样的,site总是接近百度索引量