【问题标题】:How Can I accelerate/Slow down the rotation of a button in CABasicAnimation如何在 CABasicAnimation 中加速/减慢按钮的旋转
【发布时间】:2016-04-18 20:28:02
【问题描述】:

我希望我的星球在靠近太阳时加速运动,在远离太阳时减速。请帮助我!谢谢

CABasicAnimation* rotationAnimation;

rotationAnimation=[CABasicAnimationanimationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: -M_PI * 2.0 /* full rotation*/ * 1/period ];//multiply more to add speed
rotationAnimation.duration = 15;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount =  HUGE_VALF;
[planet.layer addAnimation:rotationAnimation forKey:@"orbit"];

【问题讨论】:

    标签: ios objective-c cabasicanimation


    【解决方案1】:

    您想使用CAMediaTimingFunction。查看pre-defined timing functions。您可以将其中之一分配给rotationAnimation.timingFunction。听起来你想要kCAMediaTimingFunctionEaseInEaseOut。我假设行星的起点远离太阳。在代码中,它看起来像这样:

    斯威夫特:

    rotationAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    

    目标-C:

    rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
    

    【讨论】:

    • 有没有你可以帮助我如何在我的代码中使用它
    • 或者举个例子
    • 如果行星相对于太阳的位置不同,你会推荐我使用什么......所以“EaseInEaseOut”不适用于所有行星......而且它不能反过来工作..它应该根据每个星球不同..
    • 那么你必须使用[CAMediaTimingFunction functionWithControlPoints:::] 并根据行星的位置给它控制点。我以前从未使用过这种方法,因此您必须阅读文档并使用一些不错的时尚试错法。
    • 非常感谢!我感谢您的帮助! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多