iPhoto的删除动画(转)

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

明天就来效仿一下那么些动画(听别人说有个私有API可以兑现,不过私有的嘛,忽略之)。

首先仔细察看下那个动画,包涵了岗位,大小还有可知八个紧要动画。

为了领会的辨证,先上核心代码:

UIBezierPath *movePath = [UIBezierPath bezierPath];
             [movePath moveToPoint:fromPoint];
 
             [movePath addQuadCurveToPoint:toPoint
                              controlPoint:CGPointMake(toPoint.x,fromPoint.y)];
 
             
             CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@”position”];
             moveAnim.path = movePath.CGPath;
             moveAnim.removedOnCompletion = YES;
             
             CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@”transform”];
             scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
             scaleAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)];
             scaleAnim.removedOnCompletion = YES;
             
             CABasicAnimation *opacityAnim = [CABasicAnimation animationWithKeyPath:@”alpha”];
             opacityAnim.fromValue = [NSNumber numberWithFloat:1.0];
             opacityAnim.toValue = [NSNumber numberWithFloat:0.1];
             opacityAnim.removedOnCompletion = YES;
             
             CAAnimationGroup *animGroup = [CAAnimationGroup animation];
             animGroup.animations = [NSArray arrayWithObjects:moveAnim, scaleAnim,opacityAnim, nil];
             animGroup.duration = 1;
             [imageView.layer addAnimation:animGroup forKey:nil];

UIBezierPath是用来创建各样曲线的类,那一个类很强大,各样你能想到的都得以用它来成功。

那边大家创制的二次曲线实际上纵然从照片的骨干点地方到垃圾箱终点的一条曲线。

至于函数中controlPoint的挑选,本身查阅API吧,那里就不多说

随之大家创造了一个CAKeyframeAnimation的动画,那些首要用以得以已毕动画的轨迹变化,大家将动画片的path值设为事先定义的曲线值。

如此那般动画就会按大家设定的轨迹移动了。

接下去是大大小小变化的卡通片,设定了初期和最终的镜头大小。CATransform3DMakeScale是用于转移变换矩阵的东东,对于二维的,z值始终为1.

继而是生成透明度的卡通,很好精晓。

由于大家用到了三种动画,所以要求用CAAnimationGroup,那样一遍性的应用它们。

如此大家就水到渠成了这么的卡通,试试啊。

有写的不明了的地方,欢迎指正。

http://www.cnblogs.com/scorpiozj

添加了项目文件 项目文件下载

相关文章