From: http://z251257144.iteye.com/blog/1439928

iPhoto 中想删除某张照片时,点击删除键,就能看到照片被回收到垃圾箱的动画。

今天就来模拟一下这个动画(据说有个私有API可以实现,不过私有的嘛,忽略之)。

首先仔细观察下这个动画,包含了位置,大小还有可见三个主要动画。

为了清楚的说明,先上核心代码:

C代码   
  1. UIBezierPath *movePath = [UIBezierPath bezierPath];
  2. [movePath moveToPoint:fromPoint];
  3. [movePath addQuadCurveToPoint:toPoint
  4. controlPoint:CGPointMake(toPoint.x,fromPoint.y)];
  5. CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
  6. moveAnim.path = movePath.CGPath;
  7. moveAnim.removedOnCompletion = YES;
  8. CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
  9. scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
  10. scaleAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)];
  11. scaleAnim.removedOnCompletion = YES;
  12. CABasicAnimation *opacityAnim = [CABasicAnimation animationWithKeyPath:@"alpha"];
  13. opacityAnim.fromValue = [NSNumber numberWithFloat:1.0];
  14. opacityAnim.toValue = [NSNumber numberWithFloat:0.1];
  15. opacityAnim.removedOnCompletion = YES;
  16. CAAnimationGroup *animGroup = [CAAnimationGroup animation];
  17. animGroup.animations = [NSArray arrayWithObjects:moveAnim, scaleAnim,opacityAnim, nil];
  18. animGroup.duration = 1;
  19. [imageView.layer addAnimation:animGroup forKey:nil];

UIBezierPath是用来创建各种曲线的类,这个类很强大,各种你能想到的都可以用它来完成。

这里我们建立的二次曲线实际上就是从照片的中心点位置到垃圾箱终点的一条曲线。

至于函数中controlPoint的选取,自己查阅API吧,这里就不多说

接着我们建立了一个CAKeyframeAnimation的动画,这个主要用于实现动画的轨迹变化,我们将动画的path值设为之前定义的曲线值。

这样动画就会按我们设定的轨迹移动了。

接下来是大小变化的动画,设定了最初和最终的画面大小。CATransform3DMakeScale是用于生成变换矩阵的东东,对于二维的,z值始终为1.

紧接着是生成透明度的动画,很好理解。

由于我们用到了三种动画,所以需要用CAAnimationGroup,这样一次性的使用它们。

这样我们就完成了这样的动画,试试吧。

iPhoto的删除动画相关推荐

  1. iPhoto的删除动画(转)

    iPhoto 中想删除某张照片时,点击删除键,就能看到照片被回收到垃圾箱的动画. 今天就来模拟一下这个动画(据说有个私有API可以实现,不过私有的嘛,忽略之). 首先仔细观察下这个动画,包含了位置,大 ...

  2. [iOS]iPhoto的删除动画(转)

    iPhoto 中想删除某张照片时,点击删除键,就能看到照片被回收到垃圾箱的动画. 今天就来模拟一下这个动画(据说有个私有API可以实现,不过私有的嘛,忽略之). 首先仔细观察下这个动画,包含了位置,大 ...

  3. iPh oto的删除动画

    iPhoto 中想删除某张照片时,点击删除键,就能看到照片被回收到垃圾箱的动画. 今天就来模拟一下这个动画(据说有个私有API可以实现,不过私有的嘛,忽略之). 首先仔细观察下这个动画,包含了位置,大 ...

  4. 第7天 Recyclerview万能的适配器(基本使用、分割线、增加删除动画)

    第7天 Recyclerview万能的适配器(基本使用.分割线.增加删除动画) Recyclerview的使用 思路 代码 Recyclerview的使用 用了很长一段时间的RecyclerView, ...

  5. Android RecyclerView设置分割线 / 下拉加载 / 选项菜单进行增加删除动画

    首先看一下我的整个程序: 主类: package com.example.day02rk;import android.os.Bundle; import android.support.v4.con ...

  6. android linearllayout 隐藏 动画,AnimatedLinearLayout:带删除动画的LinearLayout

    本文介绍一个自定义ViewGroup:AnimatedLinearLayout,在普通的LinearLayout基础上,它实现了删除某一项后,后面的项依次前移或上移的动画效果,效果如下: Animat ...

  7. 用maya API删除动画曲线多余的关键帧——掐头去尾删帧

    写这个东西的缘由是一个同事给我说了一个他以前碰到的一个问题:一个文件里有上万条动画曲线,要删除某一帧前面的帧,也要删掉某一帧后面的帧,相当于是掐头去尾,但从功能上来说这个mel完全可以胜任,但是执行起 ...

  8. ppt中插入和删除动画

    插入: 点击组件->工具栏的动画->选择样式 改变动画顺序: 1.点击动画之后,我们即可看到有一些动画的排序先后了,我们点击其中的一个动画序号,然后就有向前以后和向后移动的顺序操作. 2. ...

  9. 【幻灯片动画制作教程】Focusky教程 | 如何删除动画效果?

    (Focusky动画演示大师简称"FS软件")在动画编辑器中,可选择删除物体的某个动画,或者删除该帧的所有动画. 详情请看下图: 1.删除某个动画: 选择该动画,然后点击动画右上角 ...

最新文章

  1. openssh配置终极一帖
  2. Uva - 12545 - Bits Equalizer
  3. Web.xml配置详解之context-param
  4. 【java实训课】工程项目文件(IDEA+MYSQL)
  5. 入行Python需要看的4本书推荐
  6. 如何处理高并发情况下的DB插入
  7. PHP类实例教程(七):析构函数与PHP的垃圾回收
  8. 20佳精美404错误页面设计欣赏
  9. 200个 jquery插件
  10. linux文件系统 - 初始化(一)
  11. chrome分辨率测试工具
  12. layer.js之回调销毁对话框
  13. Python制作某电商平台商品竞拍脚本,能自动定时、抢拍、购买
  14. c语言筛选法求素数,筛选法求素数
  15. post接口请求测试,通俗易懂
  16. 早上不会起不来!五个窍门帮你摆脱起床困难症(ฅ◑ω◑ฅ)
  17. 如何用CMD查看电脑详细配置
  18. cpu上干硅脂怎么清理_如何去除CPU上原来的硅脂
  19. 如何将中文转为计算机语言,怎么将中文系统变成英文系统
  20. docker 常用命令(二)——容器命令

热门文章

  1. 为大家推荐4款对日常工作很有帮助的PC软件
  2. win7 网络打印机 未授予用户在此计算机上的请求登录类型,如何解决Win7“未授予用户在此计算机上的请求登录类型quot;问题 - Win10专业版官网...
  3. Tushare数据工具功能简介
  4. OpenTSDB安装笔记
  5. 第十期|惊!游戏广告主投放十万被骗,推广作弊竟全是虚拟用户
  6. Ubuntu11.04中安装中标普华Office5.0
  7. php的排序函数,php 数组排序函数,
  8. python查看电脑当前用户_PHP如何获取当前windows系统的登录用户名
  9. AWS EC2手动/自动切换Elastic IP
  10. 印度游记: 在班加罗尔的一周