在一个View上绘制一条直线  然后做出相应的动画效果  可以这样封装三个方法:

/**

*  划线工具

*

*  @param lineArray   线段的点数组 NSValue 类型  默认第一个点为起点

*  @param time        划线时间

*  @param strokeColor 线段颜色

*/

- (void)axcBaseAniamtionWithLinePointArray:(NSArray <NSValue *> *)lineArray time:(CGFloat )time strokeColor:(UIColor *)strokeColor{

if (lineArray.count <= 1) {

if (_axcBasePrintLog) {

NSLog(@"%@:\n你的数组对象少于一个,无法划线!",self);

}

return;

}

if (_axcBasePrintLog) {

NSLog(@"%@:\n当前正在划线\t方法名:axcBaseAniamtionWithLinePointArray\t起点:%@\t划线时间:%.2f,颜色:%@\n",self,NSStringFromCGPoint([lineArray[0] CGPointValue]),time,strokeColor);

}

UIBezierPath *_path=[UIBezierPath bezierPath];

CGPoint point1 = [lineArray[0] CGPointValue];

[_path moveToPoint:point1];

for (int i = 1; i < lineArray.count; i ++) {

[_path addLineToPoint: [lineArray[i] CGPointValue]];

if (_axcBasePrintLog) {

NSLog(@"%@:遍历划线点(%d):%@\n",self,i + 1,NSStringFromCGPoint([lineArray[i] CGPointValue]));

}

}

CAShapeLayer *shapeLayer=[CAShapeLayer layer];

shapeLayer.path=_path.CGPath;

shapeLayer.fillColor=[UIColor clearColor].CGColor;//填充颜色

shapeLayer.strokeColor=strokeColor.CGColor;//边框颜色

[self.view.layer addSublayer:shapeLayer];

// 动画

CABasicAnimation *pathAniamtion = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];

// 时间

pathAniamtion.duration = time;

pathAniamtion.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

pathAniamtion.fromValue = [NSNumber numberWithFloat:0.0f];

// 划线段的百分之多少

pathAniamtion.toValue = [NSNumber numberWithFloat:1];

pathAniamtion.autoreverses = NO;

[shapeLayer addAnimation:pathAniamtion forKey:nil];

}

/**

*  圆规工具

*

*  @param Center      中心点

*  @param radius      半径

*  @param startAngle  开始角度

*  @param endAngle    结束角度

*  @param clockwise   是否顺时针

*  @param time        作图时间

*  @param strokeColor 颜色

*/

- (void)axcBaseAniamtionArcWithCenter:(CGPoint )Center

radius:(CGFloat )radius

startAngle:(CGFloat )startAngle

endAngle:(CGFloat )endAngle

clockwise:(BOOL )clockwise

time:(CGFloat )time

strokeColor:(UIColor *)strokeColor{

UIBezierPath *_path=[UIBezierPath bezierPath];

[_path addArcWithCenter:Center radius:radius startAngle:startAngle endAngle:endAngle clockwise:clockwise];

CAShapeLayer *shapeLayer=[CAShapeLayer layer];

shapeLayer.path=_path.CGPath;

shapeLayer.fillColor=[UIColor clearColor].CGColor;//填充颜色

shapeLayer.strokeColor=strokeColor.CGColor;//边框颜色

[self.view.layer addSublayer:shapeLayer];

// 动画

CABasicAnimation *pathAniamtion = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];

// 时间

pathAniamtion.duration = time;

pathAniamtion.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

pathAniamtion.fromValue = [NSNumber numberWithFloat:0.0f];

// 划线段的百分之多少

pathAniamtion.toValue = [NSNumber numberWithFloat:1];

pathAniamtion.autoreverses = NO;

[shapeLayer addAnimation:pathAniamtion forKey:nil];

}

/**

*  清除所有划线

*/

- (void)axcBaseClearAllShapeLayer{

if (_axcBasePrintLog) {

NSLog(@"%@:\n当前执行清除该界面上的所有划线!",self);

}

NSArray *shapeLayerArray = self.view.layer.sublayers;

for (int i = 0; i < shapeLayerArray.count; i ++) {

if ([shapeLayerArray[i] isKindOfClass:[CAShapeLayer class]]) {

[shapeLayerArray[i] removeFromSuperlayer];

}

}

}

【axc】简单的线性动画绘制的更多相关文章

  1. iOS 动画绘制线条颜色渐变的折线图

    效果图 .................... 概述 现状 折线图的应用比较广泛,为了增强用户体验,很多应用中都嵌入了折线图.折线图可以更加直观的表示数据的变化.网络上有很多绘制折线图的demo,有 ...

  2. 重新想象 Windows 8 Store Apps (19) - 动画: 线性动画, 关键帧动画, 缓动动画

    原文:重新想象 Windows 8 Store Apps (19) - 动画: 线性动画, 关键帧动画, 缓动动画 [源码下载] 重新想象 Windows 8 Store Apps (19) - 动画 ...

  3. 基于Babylon.js编写简单的骨骼动画生成器

    使用骨骼动画技术可以将网格的顶点分配给若干骨头,通过给骨头设定关键帧和父子关系,可以赋予网格高度动态并具有传递性的变形 效果.这里结合之前的相关研究在网页端使用JavaScript实现了一个简单的骨骼 ...

  4. 用react的ReactCSSTransitionGroup插件实现简单的弹幕动画

    1,开始的思路 公司想做直播方面的项目,并想加入弹幕的功能,直播的页面已经作为一个组件放在了用react+redux写好的一个网站项目上.所以技术老大让我研究下如何用react实现弹幕的功能.下面我就 ...

  5. 背水一战 Windows 10 (14) - 动画: 线性动画, 关键帧动画

    [源码下载] 背水一战 Windows 10 (14) - 动画: 线性动画, 关键帧动画 作者:webabcd 介绍背水一战 Windows 10 之 动画 线性动画 - ColorAnimatio ...

  6. c语言描述简单的线性表,获取元素,删除元素,

    //定义线性表 #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; //这是数组的长度, ...

  7. Android简单逐帧动画Frame的实现(二)

    Android简单逐帧动画Frame的实现   Android简单逐帧动画Frame的实现 1.逐帧动画 即是通过播放预先排序好的图片来实现动态的画面,感觉像是放电影. 2.实现步骤: 1. 在工程里 ...

  8. WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法。

    原文:WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/articl ...

  9. 用path动画绘制水波纹

    用path动画绘制水波纹 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 15/7/3. / ...

随机推荐

  1. 疯狂java笔记(七) - Java集合之Map

    Map是以键值对(key-value)的形式来存储数据的.而且Map不允许key的重复,通过Map存储key-value对时,只需要考虑key的存储就可以,key存储后value就会跟着key(完全可 ...

  2. 【NOI2011】道路修建 BFS

    [NOI2011]道路修建 Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建 ...

  3. hadoop2.2.0 + hbase 0.94 + hive 0.12 配置记录

    一开始用hadoop2.2.0 + hbase 0.96 + hive 0.12 ,基本全部都配好了.只有在hive中查询hbase的表出错.以直报如下错误: java.io.IOException: ...

  4. [linux]ubuntu 下安装RMySQL包

    http://downloads.mysql.com/docs/connector-odbc-en.pdf http://blog.csdn.net/ixidof/article/details/59 ...

  5. POJ2104 & 主席还是可持久化还是 函数式

    题意: 区间第K大. SOL: 非常有意思的树,尽管我搞不清楚名字. 原理参见clj的可持久化数据结构研究. wa了整整一天,然后重打,然后1a... code: /*================ ...

  6. Button 设置适应不同版本 旋转以后大小相应的改变

    很多时候对于不同的版本,随设备的旋转以后,相应的Button的大小如果不做相应的改变,这很影响视图的美观和布局:下面是小编的个人看法  UIButton *button = [[UIBtton all ...

  7. 数论初步(费马小定理) - Happy 2004

    Description Consider a positive integer X,and let S be the sum of all positive integer divisors of 2 ...

  8. lsof在运维中的应用

    场景一:文件系统使用率很高,但是找不到具体哪个文件占用了空间 原因:在unix系统中,如果有两个进程同时使用一个文件,如果其中一个进程删除了这个文件,但是这个文件此刻不会正真被释放,一直要等待引用它的 ...

  9. 定义 iOS 方法名等不错的规范

    1.配置视图不应命名为 setxxxx, 而应叫做 showxxxx 2.让按钮高亮不应叫做 showxxx, 而应叫做 highlightedxxx. 3,弹出 toastView 可以用 show ...

  10. 再过几个月Apple Watch就要正式发布了

    本文由cocoaChina译者小组成员@TurtleFromMars 翻译自Appcoda,原作者:julian engel,原文:WatchKit Introduction: Building a ...