iOS 对象沿着指定路径进行动画

来源:互联网 发布:动作数据 编辑:程序博客网 时间:2024/06/16 07:25
以下方法在自定义view的类里面实现,可放在自定义函数中自行控制触法。也可放在drawRect或layoutSubviews里面让view在显 示时触法。但推荐放在自定义view中触发,因为这样才可以做到自行控制,并保证同时只有一个在运行,否则会因为view的改变导致重绘,导致同时执行多 个相同的动画,会影响效果和耗费内存。

让view对象沿指定的路径进行动画的方法:

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];    //在动画设置一些变量    pathAnimation.calculationMode = kCAAnimationPaced;    //我们希望动画持续    //如果我们动画从左到右的东西——我们想要呆在新位置,    //然后我们需要这些参数    pathAnimation.fillMode = kCAFillModeForwards;    pathAnimation.removedOnCompletion = NO;    pathAnimation.duration = 10;//完成动画的时间    //让循环连续演示    pathAnimation.repeatCount = 10;    //设置的路径动画    CGMutablePathRef curvedPath = CGPathCreateMutable();    CGPathMoveToPoint(curvedPath, NULL, 10, 10);//起始位置    CGPathAddQuadCurveToPoint(curvedPath, NULL, 10, 450, 310, 450);    CGPathAddQuadCurveToPoint(curvedPath, NULL, 310, 10, 10, 10);    //现在我们的路径,我们告诉动画我们想使用这条路径,那么我们发布的路径    pathAnimation.path = curvedPath;    CGPathRelease(curvedPath);        UIImageView *circleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]];    circleView.frame = CGRectMake(1, 1, 40, 40);    [self.view addSubview:circleView];    //添加动画circleView——一旦你添加动画层,动画开始    [circleView.layer addAnimation:pathAnimation                            forKey:@"moveTheSquare"];

0 0
原创粉丝点击