在 swift 中动画摇摆

Animate wobbling in swift

我正在尝试为 swift 中的摆动设置动画,但到目前为止运气不佳。 我有一个 table 上面的鸡蛋,我想让鸡蛋的底部粘在 table 上,然后让鸡蛋的顶部慢慢向左摆动对了。

到目前为止我已经试过了:

    CATransaction.begin()
    CATransaction.setCompletionBlock({
        completion?()
    })
    let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
    rotateAnimation.autoreverses = true
    rotateAnimation.repeatCount = Float( loops )
    rotateAnimation.fromValue = CGFloat(-0.1)
    rotateAnimation.toValue = CGFloat(0.1)
    rotateAnimation.duration = 1.0
    animObject.layer.addAnimation(rotateAnimation, forKey: nil)
    CATransaction.commit()

然而,这会使整个鸡蛋旋转,包括它的底端,所以它实际上看起来并不像摇晃。

想象一下,你手里拿着一支铅笔,左右旋转它。笔的顶端和底端都向彼此的相对侧伸出同样远的距离。现在把铅笔的底端放在table上,左右倾斜。只有顶端改变位置。 这就是我想要实现的目标。

试试这个(可能需要稍微调整一下):

egg.layer.anchorPoint = CGPoint(x: 0.5, y: 1.0)

这会将锚点设置为底部中间,因此现在当您旋转时,它会围绕该点旋转,而不是默认的 {0.5, 0.5}