-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的範圍。 –