iOS动画对象回到原始位置

时间:2017-07-21 11:54:27

标签: ios swift animation position core-animation

我正在尝试使用按钮Tap上的CABasicAnimation为UIView对象的位置设置动画。对象动画并移动到'到'位置,但在动画结束后返回原始位置。我想在动画结束后保留​​视图对象的位置。这是执行动画的代码片段。 viewObject是我试图制作动画的对象。

projects

4 个答案:

答案 0 :(得分:6)

在添加动画之前添加以下行

animation.isRemovedOnCompletion = false
animation.fillMode = kCAFillModeForwards

<强>夫特

animation.fillMode = .forwards
animation.isRemovedOnCompletion = false

答案 1 :(得分:5)

请添加以下代码:

<强>目标-C:

animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;

Swift 4:

animation.fillMode = .forwards
animation.isRemovedOnCompletion = false

答案 2 :(得分:0)

UIView.animateWithDuration(0.7, delay: 1.0, options: .CurveEaseOut, animations:
{
    Code
}, completion: 
{ 
   finished in
   println("Nothing to do!")
})

只需在块内完成动画即可。保持这个位置,不要回复。它应该保持在同一位置

并在代码中添加此行 cabasicanimation.removedOnCompletion = false; 这一行将使它不会回到同一状态

答案 3 :(得分:0)

我认为你需要在完成时再次提供框架。所以,这可能是一个很好的方法

UIView.animate(withDuration: 0.7, delay: 1.0, options: .curveLinear, animations: {

   let animation = CABasicAnimation(keyPath: "position")
    animation.timingFunction = CAMediaTimingFunction(controlPoints: 0.86, 0, 0.07, 1.0)
    animation.duration = 0.5
    animation.fromValue = NSValue(cgPoint: CGPoint(x: self.viewObject.center.x, y: self.viewObject.center.y))
    animation.toValue = NSValue(cgPoint: CGPoint(x: self.viewObject.center.x + 64, y: self.viewObject.center.y))
    self.viewObject.layer.add(animation, forKey: "position")

}, completion: { finished in
    self.viewObject.frame.origin.x = self.viewObject.frame.origin.x + 64

})

试试这个。它会完美地运作