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

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

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

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

删除动画

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

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

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

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

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

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

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

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

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

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

有写的不清楚的地方,欢迎指正。

转载请注明,谢谢!

http://www.cnblogs.com/scorpiozj

转载于:https://www.cnblogs.com/scorpiozj/archive/2011/09/28/2194162.html

iPh oto的删除动画相关推荐

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

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

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

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

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

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

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

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

  5. ppt中插入和删除动画

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

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

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

  7. 【凯子哥带你夯实应用层】使用ActionMode实现有删除动画的多选删除功能

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 ActionMode是3.0之后,官方推荐的一种上下文菜单的实现方式,在之前一直用的是Context Men ...

  8. iPhoto的删除动画(转)

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

  9. iPhoto的删除动画

    From: http://z251257144.iteye.com/blog/1439928 iPhoto 中想删除某张照片时,点击删除键,就能看到照片被回收到垃圾箱的动画. 今天就来模拟一下这个动画 ...

最新文章

  1. this.options[selectedIndex]的使用
  2. [转] fedora linux下安装vmware tools的最好方法
  3. WPF自定义控件的自定义属性绑定后不更新问题
  4. 双向循环链表:鸿蒙轻内核中数据的“驿站”
  5. python怎么做一个动态烟花_简单烟花效果.py python firework demo
  6. 设计模式(20):外观模式Facade
  7. 跑马灯带你深入浅出TextView的源码世界
  8. 2017中兴算法挑战赛(迪杰斯特拉)
  9. java徽章_java
  10. Linux刻录光盘win10认不到,Windows10系统读不取DVD光驱和刻录光盘
  11. 公共经济学(开卷)期末复习题
  12. ubuntu20 安装TP Link TL-WDN5200无线网卡驱动
  13. Legacy BIOS MBR 安装黑苹果 High sierra
  14. 安装VSCode并打开Git仓库
  15. 毛球修剪器单片机开发方案-衣物专属的美容师
  16. 批量修改.CR2 格式的照片为.jpg
  17. 开放原子开源基金会副秘书长刘京娟:中国开源发展现状及趋势思考
  18. r语言中的或怎么表示什么不同_R语言中灵活运用if实现根据不同条件执行不同的语句...
  19. 开票系统导出的OFD文档如何转换PDF格式?
  20. GraphX PageRank

热门文章

  1. BZOJ1707:[Usaco2007 Nov]tanning分配防晒霜
  2. 新博客, 新方向, 新动力, 心坚持
  3. 在H5页面中使用Google Analytics
  4. 云栖专辑 | 阿里开发者们的第8个感悟:在信息大爆炸的时代,保持专注度显得尤为可贵
  5. 计算方法实验(四):牛顿迭代法
  6. 天气预报插件使用教程
  7. 自己动手实现文件文件夹树列表选择框(xingyun86源码)
  8. 3. 使用K8S部署tomcat
  9. 电脑考证必须用五笔输入吗
  10. Ubuntu16.04安装armadillo库