在 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}
。
我正在尝试为 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}
。