【axc】简单的线性动画绘制
在一个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】简单的线性动画绘制的更多相关文章
- iOS 动画绘制线条颜色渐变的折线图
效果图 .................... 概述 现状 折线图的应用比较广泛,为了增强用户体验,很多应用中都嵌入了折线图.折线图可以更加直观的表示数据的变化.网络上有很多绘制折线图的demo,有 ...
- 重新想象 Windows 8 Store Apps (19) - 动画: 线性动画, 关键帧动画, 缓动动画
原文:重新想象 Windows 8 Store Apps (19) - 动画: 线性动画, 关键帧动画, 缓动动画 [源码下载] 重新想象 Windows 8 Store Apps (19) - 动画 ...
- 基于Babylon.js编写简单的骨骼动画生成器
使用骨骼动画技术可以将网格的顶点分配给若干骨头,通过给骨头设定关键帧和父子关系,可以赋予网格高度动态并具有传递性的变形 效果.这里结合之前的相关研究在网页端使用JavaScript实现了一个简单的骨骼 ...
- 用react的ReactCSSTransitionGroup插件实现简单的弹幕动画
1,开始的思路 公司想做直播方面的项目,并想加入弹幕的功能,直播的页面已经作为一个组件放在了用react+redux写好的一个网站项目上.所以技术老大让我研究下如何用react实现弹幕的功能.下面我就 ...
- 背水一战 Windows 10 (14) - 动画: 线性动画, 关键帧动画
[源码下载] 背水一战 Windows 10 (14) - 动画: 线性动画, 关键帧动画 作者:webabcd 介绍背水一战 Windows 10 之 动画 线性动画 - ColorAnimatio ...
- c语言描述简单的线性表,获取元素,删除元素,
//定义线性表 #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; //这是数组的长度, ...
- Android简单逐帧动画Frame的实现(二)
Android简单逐帧动画Frame的实现 Android简单逐帧动画Frame的实现 1.逐帧动画 即是通过播放预先排序好的图片来实现动态的画面,感觉像是放电影. 2.实现步骤: 1. 在工程里 ...
- WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法。
原文:WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/articl ...
- 用path动画绘制水波纹
用path动画绘制水波纹 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 15/7/3. / ...
随机推荐
- Codeforces 567C Geometric Progression(思路)
题目大概说给一个整数序列,问里面有几个包含三个数字的子序列ai,aj,ak,满足ai*k*k=aj*k=ak. 感觉很多种做法的样子,我想到这么一种: 枚举中间的aj,看它左边有多少个aj/k右边有多 ...
- XIII Open Cup named after E.V. Pankratiev. GP of Saratov
A. Box Game 注意到局面总数不超过$50000$,而且每次操作都会改变石子的奇偶性,因此按奇偶可以将状态建成二分图,然后求出最大匹配. 如果状态数是偶数,那么先手必胜,策略就是每次走匹配边, ...
- 流式大数据处理的三种框架:Storm,Spark和Samza
许多分布式计算系统都可以实时或接近实时地处理大数据流.本文将对三种Apache框架分别进行简单介绍,然后尝试快速.高度概述其异同. Apache Storm 在Storm中,先要设计一个用于实时计算的 ...
- HBase 压缩算法设置及修改
Compression就是在用CPU换IO吞吐量/磁盘空间,如果没有什么特殊原因推荐针对Column Family设置compression,下面主要有三种算法: GZIP, LZO, Snappy, ...
- 未能加载文件或程序集"Microsoft.Web.Infrastructure 的解决方案
转载请注明来源: http://www.cnblogs.com/zaiyuzhong/p/Unload-Infrastructure-Solution.html 部署MVC5 项目发布到文件系统 I ...
- Codeforces Round #352 (Div. 2) A Summer Camp
Every year, hundreds of people come to summer camps, they learn new algorithms and solve hard proble ...
- HDU 3652 B-number(数位DP)
题目链接 学习大神的数位DP模版. #include <iostream> #include <cstdio> #include <cstring> using n ...
- 【CodeVS】 p1225 八数码难题
题目描述 Description Yours和zero在研究A*启发式算法.拿到一道经典的A*问题,但是他们不会做,请你帮他们.问题描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字 ...
- Android --ToggleButton的使用
1. 效果图
- asp.net mvc下的多语言方案 包含Html,Javascript和图片
在网上查阅了众多方案,觉得路过秋天的方案 解耦性比较好,可以不使用微软的Resource文件,而是将所有的词汇放入在一个txt的词典之中,便于维护. 步骤如下: 1)在整个程序的入口处global.a ...