iPhone的删除动画(转)
来源:互联网 发布:解压缩软件for mac 编辑:程序博客网 时间:2024/06/07 19:03
iPhone中想删除某张照片时,点击删除键,就能看到照片被回收到垃圾箱的动画。
今天就来模拟一下这个动画(据说有个私有API可以实现,不过私有的嘛,忽略之)。
首先仔细观察下这个动画,包含了位置,大小还有可见三个主要动画。
为了清楚的说明,先上核心代码:
[代码]c#/cpp/oc代码:
01
UIBezierPath *movePath = [UIBezierPath bezierPath];
02
[movePath moveToPoint:fromPoint];
03
04
[movePath addQuadCurveToPoint:toPoint
05
controlPoint:CGPointMake(toPoint.x,fromPoint.y)];
06
07
08
CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:
@"position"
];
09
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,这样一次性的使用它们。
这样我们就完成了这样的动画,试试吧。
- iPhone的删除动画(转)
- 实现iphone/Ipad 删除应用的颤抖动画效果
- iPhone中删除app时icon晃动的动画
- iPhoto的删除动画(转)
- iphone一个loading的动画
- iphone里的动画过渡
- iphone的tableview滑动删除
- iphone 动画
- RecyclerView 动画 (添加、删除动画 以及 加载item 时的动画)
- 两种 iPhone 界面的动画效果
- Iphone页面跳转动画的封装
- iphone中弹出动画的实现
- iPhone页面跳转动画的封装
- iPhone页面跳转动画的封装
- ListView的item删除动画
- ListView删除Item的动画
- ListView (加载、删除) 动画
- iPhone开发 文件的增加删除查询
- PowerDesigner 把Comment复制到name中和把name复制到Comment
- javascript验证email
- Zlib函数列表和使用手册
- jqgrid 根据iRow获取唯一的rowid 以及互转
- 开机自动拔号上网(无路由器)
- iPhone的删除动画(转)
- 找到一款不错的网站压力测试工具webbench[原创]
- ArcGIS Server SOEs开发前应考虑的事项
- CodeForces Round #125 (198C) - Delivering Carcinogen
- 如何绕过“ora-14551 无法在查询中执行DML操作”
- java 继承和多态 抽象类和接口
- 挂接在/sys上的对LED灯控制的驱动
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux内核抢占实现机制分析
- 线性表的使用