-1
我有以下扩展UIView执行一个动画。CABasicAnimation不会平滑地结束
尽管结局并不平坦,但动画效果并不理想。对于最终的动画计数,UIView将变为center.x - 40
,并严厉地返回到center.x
。
我无法以平稳的方式让它结束。我怎样才能做到这一点?
extension UIView {
func buzz() {
let animation = CABasicAnimation(keyPath: "position")
animation.duration = 0.4
animation.repeatCount = 2
animation.autoreverses = true
animation.fromValue = NSValue(cgPoint: CGPoint(x: self.center.x - 40.0, y: self.center.y))
animation.toValue = NSValue(cgPoint: CGPoint(x: self.center.x + 40.0, y: self.center.y))
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
layer.add(animation, forKey: "position")
}
}
有想法,但可以通过提供一个示例代码来节省开支。 –
在开启大括号之后或在让动画后的空行中添加此行:... layer.position = CGPoint(x:self.center.x + 40.0,y:self.center.y) – Mozahler
该行代码使它只在一个方向上移动(嗡嗡声效果消失),一旦它完成,视图超出了40的范围。 –