0

我说的是当用户按下按钮拍照时的效果,它会缩小并移动到工具栏?这一般是如何实现的?

4

2 回答 2

0

所以收缩动画是由

 [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

于 2012-10-08T08:30:17.333 回答
0

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

我在这篇博文中写了一个类似的动画(iPhone 上 Safari 的后台打开动画)。并非所有代码都是必需的,但其中的某些部分对您尝试制作的动画很有用。


你应该

  • 计算比例因子使图像大小合适
  • 计算您想要为图像设置动画的路径。
  • 使用计算的比例因子为比例设置动画
  • 沿路径设置位置动画(使用 CAKeyframeAnimation)

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

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

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

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

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

于 2012-10-08T08:34:14.600 回答