iPhone如何获得像相机应用程序一样的拍照效果



我说的是当用户按下按钮拍照时,它会收缩并移动到工具栏上的效果?总体而言,这是如何实现的?

您可以通过缩放(应用变换)和移动(设置位置动画)图像来创建它。

我在这篇博客文章中写了一个类似的动画(iPhone上Safari的后台打开动画)。不是所有的代码都是必要的,但其中的一些代码将对你试图做的动画有用


您应该

  • 计算比例因子以使图像具有适当的大小
  • 计算要沿其设置图像动画的路径
  • 使用计算的比例因子制作比例动画
  • 沿路径设置位置动画(使用CAKeyframeAnimation)

由于您同时制作两个动画,因此可以从使用CAAnimationGroup中获益。

由于您正在设置工具栏的动画,该工具栏可能是视图层次结构的另一部分,而不是图像所在的位置,因此您可能需要使用类似的方法

- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 

在不同视图之间转换坐标。

因此收缩动画由实现

[UIView beginAnimations:@"animationShrink" context:NULL];
[UIView setAnimationDuration:kSlideInAnimationDuration];
flipFlopContainer.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView setAnimationDelegate:self];
[UIView    setAnimationDidStopSelector:@selector(shrinkAnimationFinished:)];
[UIView commitAnimations];

在shrinkAnimationFinished方法中进行此动画之后,您需要定义要遵循的路径,并根据该路径更改视图的位置。

请参阅下面的动画线程

使用核心动画(CAKeyFrameAnimation)调整和移动UIView

相关内容