私は、コインフリップトスをシミュレートするアニメーションを作成しようとしています。これは私が現在使用しているものですが、各アニメーションの実行に若干の遅延があり、UIView.transitionが最適な方法であるとは思いません。連続フリップアニメーションの作成方法は?
var duration: CGFloat = 0.25
var imageIndex = 1
var repeatCount = 0
@objc func handleSpin()
{
let options: UIViewAnimationOptions = .transitionFlipFromLeft
UIView.transition(with: self.coinImageView, duration: TimeInterval(duration), options: options, animations: nil) { (completed) in
if self.repeatCount == 10
{
self.duration = 0.25
self.imageIndex = 1
self.repeatCount = 0
return
//animation done
}
else
{
self.coinImageView.image = UIImage(named: self.imageNames[self.imageIndex])
self.duration += 0.075
self.repeatCount += 1
self.imageIndex = self.imageIndex == self.imageNames.count - 1 ? 0 : self.imageIndex + 1
self.handleSpin()
}
}
この関数は、それ自身を10回呼び出して、アニメーションの継続時間を少しずつ増やします。しかし、私が言いましたように、私が修正したいそれぞれの実行の間にわずかな遅延があります。
私もCATransitionと試みたが、このようなImageViewの層に追加している:
func flipAnimation()
{
let animation = CATransition()
animation.type = "flip"
animation.startProgress = 0
animation.endProgress = 0.5
animation.subtype = "fromLeft"
animation.duration = 0.5
animation.repeatCount = 0
self.layer.add(animation, forKey: "animation")
}
ここでの問題、それはに戻りますように私は、反転したまま画像を得ることができないということですアニメーションが終了したときのデフォルト、さらにアニメーションがいつ行われたかを把握する方法がわかりません。
これを行うには3番目の方法がありますか?
編集:私はSpringのライブラリを使ってみましたが、CATransitionと同じ問題があります。アニメーションが終了すると、イメージは元の状態に戻り、私はそれを防ぐ方法を見つけることができません。
コードから取得するアニメーションサンプルをアニメーションサンプルに追加します。 –
私はできるだけ早く短いビデオをアップロードします。 – Elhoej
チェックの答えhttps://stackoverflow.com/a/22549926/2963352 – vivek