iPhone怎么做指定路径的动画

发布于 2022-08-24 11:49:51 字数 266 浏览 14 评论 0

之前做动画一直用这种方法

[UIView beginAnimations:@"animation" context:NULL];
[UIView setAnimationDuration:0.5f];
// 新位置
[UIView commitAnimations];

但是解决不了View需要转向的问题。
我现在需要让这个动画过程中,View有一个抖动的效果,这个实现不了,除非我用延迟,做两次动画,感觉这样很恶心。有没有什么办法是可以指定路径做动画的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

简单 2022-08-31 11:49:51

用Core Animation,可以指定动画路径。
下面例子实现一个物体下落再弹起的动画

    [CATransaction begin];
    [CATransaction setValue:[NSNumber numberWithFloat:ANIMATION_DURATION] forKey:kCATransactionAnimationDuration];

    CAKeyframeAnimation *positionAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    CGMutablePathRef positionPath = CGPathCreateMutable();
    CGPathMoveToPoint(positionPath, NULL, [theView layer].position.x, [theView layer].position.y);
    CGPathAddQuadCurveToPoint(positionPath, NULL, [theView layer].position.x, - [theView layer].position.y, [theView layer].position.x, [theView layer].position.y);
    CGPathAddQuadCurveToPoint(positionPath, NULL, [theView layer].position.x, - [theView layer].position.y * 1.5, [theView layer].position.x, [theView layer].position.y);
    CGPathAddQuadCurveToPoint(positionPath, NULL, [theView layer].position.x, - [theView layer].position.y * 1.25, [theView layer].position.x, [theView layer].position.y);
    positionAnimation.path = positionPath;
    positionAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    [[theView layer] addAnimation:positionAnimation forKey:@"positionAnimation"];
    CGPathRelease(positionPath);
    [CATransaction commit];	

当然,在

[CATransaction begin];
...
[CATransaction commit];

代码块中,你可以对一个或多个视图同时添加多个动画效果(如改变其颜色、大小等),来实现更为复杂的动画

二智少女 2022-08-31 11:49:51

Core Animation。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文