basicAnimation移动图形
目的:采用CABasicAnimation 点击屏幕上的点来是实现图像的位置移动 并且位置能够不反弹
难点:1 通过动画的KeyPath找到layer的属性
2 通过NSValue将点包装成对象 (下一点toValue的位置 对真正视图的改变)
包装的时候是【NSValue valueWithPoint】
取值的时候是【toValue CGPoint】;
注意点:当图像移动了 其实真正的涂层是没有移动的 要想让它真正的发生改变 一般在动画之后做一些具体的移动位置之类的操作
效果图:

具体实现代码
viewController.m
@interface ViewController ()
@property(nonatomic,strong)CALayer *subLayer;
@end
[super viewDidLoad];
//子层的设置 并加入到跟层中 _subLayer = [[CALayer alloc]init];
_subLayer.backgroundColor = [[UIColor redColor]CGColor];
_subLayer.bounds = CGRectMake(0, 0, 100, 100);
_subLayer.position = CGPointMake(100, 100);
_subLayer.cornerRadius = 50; [self.view.layer addSublayer:self.subLayer]; //创建一个手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)]; //设置几根手指点 点几次
tap.numberOfTouchesRequired = 1;
tap.numberOfTapsRequired = 1; //给view添加手势
[self.view addGestureRecognizer:tap ];
/*
基础动画关注的知识两个点 第一个点不设置的话就是当前点 有属性toValue表示下一点(目的点)
还有就是一定要记得给动画设置代理
*/
实现手势的代码:
-(void)tap:(UITapGestureRecognizer*)sender
{
/*找到点击点 然后将点击点设置成 动画的toValue*/
CGPoint location = [sender locationInView:self.view];
//创建动画 并设置其属性
CABasicAnimation *basic = [[CABasicAnimation alloc]init];
//动画时间 和 keyPath
basic.duration = 3.0f;
basic.keyPath = @"position"; //将下一点进行封装后 赋值给basic的下一点
NSValue *mytoValue = [NSValue valueWithCGPoint:location];
basic.toValue = mytoValue;
//设置能够呆在最后的位置不动
basic.removedOnCompletion = NO;
basic.fillMode = kCAFillModeForwards; //给动画添加代理(很重要)
basic.delegate = self; //将动画添加给subLayer
[self.subLayer addAnimation:basic forKey:@"basic"]; }
代理动画的方法:
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
NSValue *toValue = ((CABasicAnimation*)anim).toValue;
self.subLayer.position = [toValue CGPointValue];
}
basicAnimation移动图形的更多相关文章
- 再谈CAAnimation动画
CAAnimaton动画分为CABasicAnimation & CAKeyframeAnimation CABasicAnimation动画, 顾名思义就是最基本的动画, 老规矩先上代码: ...
- 转载:iOS开发之让你的应用“动”起来
在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画.动画 ...
- iOS开发系列--让你的应用“动”起来
--iOS核心动画 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建 ...
- 基本动画CABasicAnimation - 完成之后闪回初始状态
基本动画CABasicAnimation 结束之后,默认闪回初始状态,那怎么解决呢? position需要设备两个属性: // MARK: - 结束后不要闪回去 anim.removedOnCompl ...
- iOS 动画组
其实早在一个多月以前就已经实现了动作组播放的功能,不过当时感觉好像没有什么难度并没有放在心上,今天突然要用到动画组,发现已经忘记了,所以又将原来的代码翻出来看了下.最后决定还是写下来,以备不时之需.动 ...
- MFC绘图(转载)
http://www.cppblog.com/bestcln/articles/83189.html 1 几何对象的结构和类 为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类.这些结 ...
- iOS进阶_动画的多种实现方式
一.UIView动画 //UIView动画有开始beginAnimation,有结束commitAnimation //第一步:开始UIView动画 [UIView beginAnimat ...
- iOS基本动画/关键帧动画/利用缓动函数实现物理动画效果
先说下基本动画部分 基本动画部分比较简单, 但能实现的动画效果也很局限 使用方法大致为: #1. 创建原始UI或者画面 #2. 创建CABasicAnimation实例, 并设置keypart/dur ...
- Facebook开源动画库 POP-POPBasicAnimation运用
动画在APP开发过程中还是经常出现,将花几天的时间对Facebook开源动画库 POP进行简单的学习:本文主要针对的是POPBasicAnimation运用:实例源代码已经上传至gitHub,地址:h ...
随机推荐
- bug修复复盘
mybatis与数据库交互时,报了莫名其妙的错,日志中显示的Stack Trace中报错的代码行数与IDE中还一致,逐重启tomcat,异常消失. 故障复盘:没有重启tomcat,使用copy命令直接 ...
- 常见的Robotium测试的问题总结:
常见的Robotium测试的问题总结:(从别处拿来的先mark一下) 1.Robotium的 测试类ActivityInstrumentationTestCase2继承了TestCase类,即robo ...
- Monkey ‘mk_request_header_process’函数输入验证漏洞
漏洞名称: Monkey ‘mk_request_header_process’函数输入验证漏洞 CNNVD编号: CNNVD-201308-003 发布时间: 2013-08-22 更新时间: 20 ...
- 在C#中使用WIA获取扫描仪数据(利用Filter处理图片)
WIA Automation Layer不仅能从设备中捕获照片,还能进行简单的处理.当WIA Automation Layer从设备中捕获照片,保存为一个ImageFile对象,我们可以通过访问该Im ...
- 使用LoadRunner对Web Services进行调用--Add Service Call
利用LoadRunner对Web Services进行测试时,通常有三种可供采用的方法: 在LoadRunner的Web Services虚拟用户协议中,[Add Service Call] 在Loa ...
- Codeforces Round #208 (Div. 2) 358D Dima and Hares
题目链接:http://codeforces.com/problemset/problem/358/D 开始题意理解错,整个就跪了= = 题目大意:从1到n的位置取数,取数的得到值与周围的数有没有取过 ...
- Hibernate输出SQL语句以便调试
配置方法:1.打开hibernate.cfg.xml文件编辑界面,在Properties窗口处,点击Add按钮,选择Show_SQL参数,输入值为True. *另外,如果按照同样的步骤,分别加入以下参 ...
- 浅谈数据结构-Boyer-Moore算法
上文讲解了KMP算法,这种算法在字符串匹配中应用比较少,在各种文本编辑器中的查找功能大多采用Boyer-Moore算法.1977年,德克萨斯大学的Robert S. Boyer教授和J Strothe ...
- myNote
源码地址 :http://450640526.ys168.com/ 编辑器是WEBBWOSER制作的 你的Internet Explorer的版本至少要是8.0的否则用不了 还有很多BUG 很多功能没 ...
- 开始android博客分享
现在开始写博客,分享android开发中的心得.