目的:采用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移动图形的更多相关文章

  1. 再谈CAAnimation动画

    CAAnimaton动画分为CABasicAnimation & CAKeyframeAnimation CABasicAnimation动画, 顾名思义就是最基本的动画, 老规矩先上代码: ...

  2. 转载:iOS开发之让你的应用“动”起来

    在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画.动画 ...

  3. iOS开发系列--让你的应用“动”起来

    --iOS核心动画 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建 ...

  4. 基本动画CABasicAnimation - 完成之后闪回初始状态

    基本动画CABasicAnimation 结束之后,默认闪回初始状态,那怎么解决呢? position需要设备两个属性: // MARK: - 结束后不要闪回去 anim.removedOnCompl ...

  5. iOS 动画组

    其实早在一个多月以前就已经实现了动作组播放的功能,不过当时感觉好像没有什么难度并没有放在心上,今天突然要用到动画组,发现已经忘记了,所以又将原来的代码翻出来看了下.最后决定还是写下来,以备不时之需.动 ...

  6. MFC绘图(转载)

    http://www.cppblog.com/bestcln/articles/83189.html 1 几何对象的结构和类 为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类.这些结 ...

  7. iOS进阶_动画的多种实现方式

    一.UIView动画 //UIView动画有开始beginAnimation,有结束commitAnimation    //第一步:开始UIView动画    [UIView beginAnimat ...

  8. iOS基本动画/关键帧动画/利用缓动函数实现物理动画效果

    先说下基本动画部分 基本动画部分比较简单, 但能实现的动画效果也很局限 使用方法大致为: #1. 创建原始UI或者画面 #2. 创建CABasicAnimation实例, 并设置keypart/dur ...

  9. Facebook开源动画库 POP-POPBasicAnimation运用

    动画在APP开发过程中还是经常出现,将花几天的时间对Facebook开源动画库 POP进行简单的学习:本文主要针对的是POPBasicAnimation运用:实例源代码已经上传至gitHub,地址:h ...

随机推荐

  1. android 通过eclipse混淆代码 打包 + proguard 总结

    android应用程序的混淆打包 1 . 在工程文件project.properties中加入下proguard.config=proguard.cfg , 如下所示: target=android- ...

  2. ASP.NET MVC 后台接收集合参数和 jquery ajax 传值

    MVC 接收参数数组(集合)   示例样本:   public class Person {      public string FirstName { get; set; }      publi ...

  3. wcf托管在IIS上,提示未能加载

    “/”应用程序中的服务器错误. 未能加载文件或程序集“ZBMYunCoreLib.DLL”或它的某一个依赖项.找不到指定的模块. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪 ...

  4. POJ1218

    Problem  C Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) Total Su ...

  5. 适配器模式 java

    结构模式:将类和对象结合在一起构成更大的结构,就像是搭积木. 1.适配器模式 源接口---适配器--目标接口 2.使用场景: 现在你有一个很古老的类,里面的一些方法很有用,你如何使用这些方法? 当然你 ...

  6. vijosP1071 新年趣事之打牌

    vijosP1071 新年趣事之打牌 链接:https://vijos.org/p/1071 [思路] 01背包+路径输出. 用d[][]记录[][]可转移的数目,>=2则输出-1,0输出0,否 ...

  7. Reachability几个常用方法

    http://oncerios.diandian.com/post/2013-06-28/40050041969

  8. Google表单

    本博文的主要内容有 .Google表单的介绍 https://www.google.com/intl/zh-CN/forms/about/ 自行去注册Google账号,不多,赘述.

  9. Redis教程03——Redis 发布/订阅(Pub/Sub)

    Pub/Sub 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者).而是发布的消息分到不同的频道,不需要知道什么样的订阅者 ...

  10. 【设计模式 - 6】之桥接模式(Bridge)

    1      模式简介 举个例子,人.车和公路是三个维度,人开着车在公路上行驶,就是将这三个维度进行了关联.人分男人(Man)和女人(Woman),车分小轿车(Car)和公共汽车(Bus),公路分市区 ...