UIImageViewをアニメーション化してから、アニメーションが完了した後でイメージビューを非表示にしようとしています。しかし、アニメーションが完了する前にイメージビューが非表示になります。私は同様の質問を見て、アニメーションリスナーを実装するか、完了時にアニメーションコード内で.hiddenコードを実行することをお勧めしますが、私は以下のshakeView()関数内でこれにどのように影響するかはわかりません。コードを実行する前にスウィフトアニメーションが完了するのを待ちます。
アニメーションが完了した後で、シェイクアニメーションを表示してイメージビューを非表示にするにはどうすればよいですか?
アニメーションは、次のコードを使用して呼び出されます。
shakeView(image1!)
shakeView(image2)
image1!.hidden = true
image2.hidden = true
アニメーション機能自体は次のようになります。
func shakeView(iv: UIImageView){
var shake:CABasicAnimation = CABasicAnimation(keyPath: "position")
shake.duration = 0.1
shake.repeatCount = 2
shake.autoreverses = true
var from_point:CGPoint = CGPointMake(iv.center.x - 5, iv.center.y)
var from_value:NSValue = NSValue(CGPoint: from_point)
var to_point:CGPoint = CGPointMake(iv.center.x + 5, iv.center.y)
var to_value:NSValue = NSValue(CGPoint: to_point)
shake.fromValue = from_value
shake.toValue = to_value
iv.layer.addAnimation(shake, forKey: "position")
}
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreAnimation_guide/CreatingBasicAnimations/CreatingBasicAnimations.html#//apple_ref/doc/で「アニメーションの終了を検出する」を参照してください。 uid/TP40004514-CH3-SW1 – Paulw11