2016-07-10 10 views
-2

に私はボタンが押されたときのUIViewのサブクラスを移動することにより、簡単なアニメーションをしようとしています。ボタンが押されると、ビューは元の位置からxx単位だけ離れて移動しますが、xx単位離れて元の位置に戻ってしまうという不具合があります。私はそれを新しいポジションでやりたい。私のコードで何が間違っていますか?アニメーションのバグは、iOS

[UIView animateWithDuration:0.5f animations:^{ 
    self.analogStick.frame = CGRectOffset(self.analogStick.frame, 0, -10); 
}]; 
+1

問題は、定義された自動レイアウトの制約があるためにどのビューをアニメーション化していることです。これをアニメーション化するには、先頭の制約のコンセントを追加し、 'constant'プロパティを変更して、' layoutIfNeeded'の呼び出しをアニメートする必要があります。 http://stackoverflow.com/a/28329399/1271826を参照してください。 – Rob

+0

@Rob最初にビューを読み込んでいるときに、アニメーションが表示されたら、ビューが読み込まれた後でも機能するかどうかを説明していますか?ボタンを押すたびに位置を動的に更新しますか? –

+1

はい、ボタンのタップで、上部の制約の 'constant'を調整し、' layoutIfNeeded'に呼び出しをアニメートします。 – Rob

答えて

1

レイアウト制約をInterface BuilderのIBOutletsとしてコードに接続します。次に、ブロックの始めに、制約の定数を所望の値に設定する。スーパービューに左の制約を設定してits constant - 10に設定します。

その後、アニメーションブロックのコード内で、ちょうど[self layoutIfNeeded]を呼び出します。やるないあなたは(あなたはあなたが何をしているかを正確にを知っている限り、私は個人的にはお勧めしませんが、3Dトランスフォームを使用することができます)制約を使用しているとき、どのような方法でフレームを設定します。

関連する問題