重复动画重新启动按钮的位置
Repeating animation restarting button's positions
我是 Swift 中的编码新手。我正在处理动画,但遇到了问题。
UIView.animate(withDuration: TimeInterval(waitTime), delay: 0, options: [.allowUserInteraction, .allowAnimatedContent, .curveLinear, .repeat], animations: {
UIView.setAnimationRepeatCount(Float(self.clickAccuracy))
// Animate tiles going down
self.tileButton1.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton2.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton3.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton4.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton5.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
})
在这里,我想重复一个 UIButton 向下移动的动画。 (我必须以较小的块重复动画,因为我希望能够单击移动按钮)。但是,按钮会按预期下降,但不会从该位置再次重复,而是会重置。这会导致无限闪烁。
我只需要让按钮向下移动,而不需要重新回到原来的位置,这样我就可以有一个流畅的动画。谢谢!
原来我原来的方法好像不行。所以我把它改成这样:
var numberOfIterations = 0
func repeatAnimation() {
UIView.animate(withDuration: TimeInterval(waitTime), delay: 0, options: [.allowUserInteraction, .allowAnimatedContent, .curveLinear, .curveLinear], animations: {
//UIView.setAnimationRepeatCount(Float(self.clickAccuracy))
// Animate tiles going down
self.tileButton1.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton2.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton3.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton4.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton5.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
}, completion: { (Finished) in
numberOfIterations += 1
// Repeat
if numberOfIterations != self.clickAccuracy {
self.repeatAnimation()
}
})
}
当@rmaddy 给我这个答案时,我们忘记删除 setAnimationRepeatCount
(已注释掉)。为了使其重复一定次数,我在完成块中放置了一个 if
语句。
我也去掉了动画选项里的.repeat
感谢大家的帮助!
我是 Swift 中的编码新手。我正在处理动画,但遇到了问题。
UIView.animate(withDuration: TimeInterval(waitTime), delay: 0, options: [.allowUserInteraction, .allowAnimatedContent, .curveLinear, .repeat], animations: {
UIView.setAnimationRepeatCount(Float(self.clickAccuracy))
// Animate tiles going down
self.tileButton1.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton2.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton3.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton4.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton5.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
})
在这里,我想重复一个 UIButton 向下移动的动画。 (我必须以较小的块重复动画,因为我希望能够单击移动按钮)。但是,按钮会按预期下降,但不会从该位置再次重复,而是会重置。这会导致无限闪烁。
我只需要让按钮向下移动,而不需要重新回到原来的位置,这样我就可以有一个流畅的动画。谢谢!
原来我原来的方法好像不行。所以我把它改成这样:
var numberOfIterations = 0
func repeatAnimation() {
UIView.animate(withDuration: TimeInterval(waitTime), delay: 0, options: [.allowUserInteraction, .allowAnimatedContent, .curveLinear, .curveLinear], animations: {
//UIView.setAnimationRepeatCount(Float(self.clickAccuracy))
// Animate tiles going down
self.tileButton1.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton2.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton3.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton4.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
self.tileButton5.center.y += self.tileButtonExample.frame.height / CGFloat(self.clickAccuracy)
}, completion: { (Finished) in
numberOfIterations += 1
// Repeat
if numberOfIterations != self.clickAccuracy {
self.repeatAnimation()
}
})
}
当@rmaddy 给我这个答案时,我们忘记删除 setAnimationRepeatCount
(已注释掉)。为了使其重复一定次数,我在完成块中放置了一个 if
语句。
我也去掉了动画选项里的.repeat
感谢大家的帮助!