我有一个倒置的抛物线,我需要在抛物线的路径上移动一个视图。视图应该稍微旋转并沿着抛物线的路径平移。
我做了一些研究,发现BezierPath(带控制点的四边形曲线)可用于铺设抛物线的路径,然后我们可以使用CAKeyFramAnimation沿路径移动物体。沿着路径动画视图对象。抛物线是什么让我感到困惑。 如何在抛物线内不断更改对象的起点并保留最新的视图状态
以下是我想用抛物线中的视图实现的内容的简要说明
视图从抛物线中的特定点开始,然后遍历抛物线直到指定的终点。 如何找出抛物线内的终点? 一旦视图到达其终点。对于下一次遍历,它可以从该点开始,然后移动到抛物线内的任何其他点。这将根据下一个终点连续发生。
这是一个粗略的草图哦路径和视图如何看起来像
此外,我希望遍历路径的视图的旋转和平移同时发生
如何做到这一点?
谢谢!
答案 0 :(得分:0)
请查看以下源代码,
绘制抛物线
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path,NULL,50.0,120.0);
CGPathAddCurveToPoint(path,NULL,50.0,275.0,
150.0,275.0,
150.0,120.0);
CGPathAddCurveToPoint(path,NULL,150.0,275.0,
250.0,275.0,
250.0,120.0);
CGPathAddCurveToPoint(path,NULL,250.0,275.0,
350.0,275.0,
350.0,120.0);
CGPathAddCurveToPoint(path,NULL,350.0,275.0,
450.0,275.0,
450.0,120.0);
路径上的CAKeyFrameAnimation。
CAKeyframeAnimation* AniLoc = [CAKeyframeAnimation animationWithKeyPath:@"position"]; // notice key change
// rest is the same
AniLoc.path = thePath;
AniLoc.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
AniLoc.keyTimes= [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:0.3f],
[NSNumber numberWithFloat:1.0f],nil];
AniLoc.duration = 2.0;
CFRelease(thePath);
[self.logo.layer addAnimation:AniLoc forKey:nil];