iphone - 如何进行抛物线转换?

标签 iphone animation uiview linear-algebra affinetransform

我正在开发一个带有一些简单动画的 iPhone 应用程序。

我有一个想要翻译的 View ,但不是沿着一条线。我想用抛物线的方式翻译它。想象一下,我正在制作一辆沿着弯曲道路行驶的汽车的动画。

我知道我可以将变换正确设置为 CGAffineTransform 的实例

问题是,我不知道如何创建转换。我知道如何缩放、平移等,但如何进行抛物线平移?这可能吗?

最佳答案

要沿着平滑曲线制作动画,您需要使用 CAKeyframeAnimation。在 this answer我提供了组合动画的代码,该动画沿曲线移动 ImageView ,同时调整其大小并使其淡出。该代码的相关部分如下:

// Set up path movement
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;

CGPoint endPoint = CGPointMake(480.0f - 30.0f, 40.0f);
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, viewOrigin.x, viewOrigin.y);
CGPathAddCurveToPoint(curvedPath, NULL, endPoint.x, viewOrigin.y, endPoint.x, viewOrigin.y, endPoint.x, endPoint.y);
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);

这将创建一条具有两个控制点的曲线,一个位于 View 的原点,另一个位于显示屏的右上角(横向模式)。有关构建路径的更多信息,请参阅 Quartz 2D Programming GuideAnimation Types and Timing Programming Guide .

要使用此动画,您需要使用如下所示的内容将其添加到 View 的图层中:

[imageViewForAnimation.layer addAnimation:pathAnimation forKey:@"curveAnimation"];

关于iphone - 如何进行抛物线转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886158/

相关文章:

javascript - webkit RequestAnimationFrame 与 setInterval 的平滑度较差

javascript - 滚动时只播放 CSS 动画

ios - 如何使用 UIView 创建自定义翻转动画

iphone - iPhone 构建中的 main.m 错误

iphone - stringWithContentsOfURL 不适用于某些字符串

java - JButton悬停效果动画。通过鼠标监听器更改不透明度

ios - 从 UIView 执行 segue

ios - 在另一个 View Controller 展开 segue 后重新加载 UIView 数据上的自定义 TableView

iphone - 核心数据获取与另一个对象有关系的对象

iphone - 切换 View 后 UIImageView 在屏幕上 float