2017-10-20 11 views
2

UIView.animateを使用して2つのアニメーションを使用した単純なアニメーションチェーンを作成しましたが、完了ブロックの2番目のアニメーションは最初のアニメーションの位置から正確に開始しません。誰でも助けることができますか?たぶん私はtranfrormプロパティを完全に理解していませんでした。完了ブロック内のUIViewアニメーションは変位で始まります

UIView.animate(withDuration: 3, animations: { 
    self.redView.transform = self.redView.transform.translatedBy(x: 100, y: 0) 
}) { (_) in 
    UIView.animate(withDuration: 2, animations: { 
     self.redView.transform = self.redView.transform.scaledBy(x: 2, y: 2) 
    }) 
} 

redViewは100で右に移動し、同じ場所から2倍になったしなければなりません。しかし、2番目のアニメーションの前には右にずれがあります。私はなぜこれが起こるのかについてのアイデアはありません。 ありがとう!この問題で

のGIF:

enter image description here

+0

は、アニメーションメソッドのコードを追加してください。 。 –

+0

@ParasGorasiya、私の質問にこのアニメーションのコードがあります –

答えて

1

わからないあなたの意図だが、私は最初のブロックにフレームをアニメーション化したいものを:

let initialFrame = redView.frame 
UIView.animate(withDuration: 3, animations: { 
    self.redView.frame = initialFrame.offsetBy(dx: 100, dy: 0) 
}) { (_) in 
    UIView.animate(withDuration: 2, animations: { 
     self.redView.transform = self.redView.transform.scaledBy(x: 2, y: 2) 
    }) 
} 
+0

本当に動作します。ありがとう!しかし、フレームを使ったアニメーションとトランスフォームの違いは何でしょうか? –

+0

これはあなたの質問に答える必要がありますhttps://stackoverflow.com/a/16177717 –

+0

ありがとうございます。今それは明らかです –

関連する問題