我正在尝试使用按钮Tap上的CABasicAnimation为UIView对象的位置设置动画。对象动画并移动到'到'位置,但在动画结束后返回原始位置。我想在动画结束后保留视图对象的位置。这是执行动画的代码片段。 viewObject是我试图制作动画的对象。
projects
答案 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
})
试试这个。它会完美地运作