4

我有一个菜单,它是一个 CALayer,它会在屏幕上滑动到给定点。我想要菜单会过一点点,然后一点点之前,然后落在点上的效果。我可以通过应用变换来移动菜单,但我希望让这种弹跳效果发挥作用。我正在研究 CAKeyframeAnimation,但找不到示例/教程。我查看了 CA Programming Guide,但没有真正找到任何东西。任何链接或帮助都会很棒。谢谢。

4

1 回答 1

5

不久前我发布了一些代码,这些代码正是您正在寻找的。基本上,您需要生成自己的CGPathRef包含您希望图层命中的所有点,并将该路径path用于CAKeyframeAnimation. 代码将如下所示:

CGPoint path[3] = {
    FTAnimationOutOfViewCenterPoint(enclosingView.bounds, view.frame, view.center, direction),
    [self overshootPointFor:view.center withDirection:direction threshold:(overshootThreshold_ * 1.15)],
    view.center
};

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef thePath = CGPathCreateMutable();
CGPathAddLines(thePath, NULL, path, 3);
animation.path = thePath;
CGPathRelease(thePath);

整个方法在这里

于 2011-04-25T16:26:56.437 回答