• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - CAKeyframeAnimation 对于 CGPathAddArc 的某些角度值停止

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:50:56 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试制作动画, 其中一个圆圈围绕 View 中心旋转。

我希望圆圈出现在点击手势的位置下方,因此我计算 View 中心与圆圈之间的距离和角度。

然后我在 CGPathAddArc 中为动画路径设置这些值。

这似乎工作得很好,但有时,在执行整个旋转后,圆圈会停止一会儿,然后重新启动。 玩了一圈,发现这一定和CGPathAddArc函数的起止角度有关,因为设置-M_PI到M_PI这样的标准值不会导致问题。

我的代码是:

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath"position"];
    pathAnimation.fillMode = kCAFillModeRemoved;
    pathAnimation.removedOnCompletion = YES;
    pathAnimation.duration = 4.0;
    pathAnimation.repeatCount = HUGE_VALF;

    CGMutablePathRef curvedPath = CGPathCreateMutable();



    //get the angle and dinstance of location in relation to center of view (mathematics)
    CGFloat angle = atan2f(location.y -self.view.center.y, location.x - self.view.center.x);
    CGFloat distance = hypotf(location.x - self.view.center.x, location.y - self.view.center.y);
    NSLog(@"angle: %f", angle);
    CGPathAddArc(curvedPath, NULL, self.view.center.x, self.view.center.y, distance, angle, angle + 2 * M_PI, NO);

    //Now we have the path, we tell the animation we want to use this path - then we release the path
    pathAnimation.path = curvedPath;
    CGPathRelease(curvedPath);

    //Add the animation to the circleView - once you add the animation to the layer, the animation starts
    [self.view addSubview:circle];
    [circle.layer addAnimation:pathAnimation forKey"moveTheSquare"];

location 保存触摸事件的坐标,圆对象是在此代码段之前创建的。任何帮助将不胜感激。



Best Answer-推荐答案


添加它会使动画均匀平滑:

pathAnimation.calculationMode = kCAAnimationPaced;

刚刚测试过。

顺便说一句,计算不错。

希望这会有所帮助。

关于ios - CAKeyframeAnimation 对于 CGPathAddArc 的某些角度值停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330329/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap