2016-06-25 11 views
2

私は、アクションがポイントAからポイントBにUIViewを移動するジェスチャーを持っています。どのようにポイントAからポイントBに移動するUIViewの素敵なトランジションを追加できますか?それを点Aから点Bにゆっくりと移動させながら見てみましょう。これはどうやってやるのですか?現時点ではB.ポイントAからポイントBへ移動するためにアニメーションを追加する

答えて

2

チェックを指すように、このコードと設定フレームあなたが

[UIView animateWithDuration:0.75 animations:^{ 
    button.frame = CGRectMake(10, 70, 100, 100); 
}]; 
+0

_animation1と_animationInProgressをどのように定義しますか? – TheHellOTrofasdasd

+0

アニメーションの完了時に何かしたいのであれば、_animationInProgressを削除するだけです。 – PinkeshGjr

+0

_animation1の未定義の識別子を取得しますか? – TheHellOTrofasdasd

0

何をしたいあなたはanimateKeyframesWithDurationanimateWithDuration:animationsを使用してそれを達成することができますが、それだけになりますが、私はフレームを設定した項目を移動します線形補間。あなたはMTAnimationを見てみましょうことを私はお勧めのアニメーションをより細かく制御したい場合には、(本当にあなたが自動レイアウトを使用している場合は、美しいアニメーション

乾杯

2

を達成するためのlibが強力で使いやすいですあなたはほぼ確実です - それはデフォルトです)、@ PinkeshGjrの解決策に問題が生じる可能性があります。 AutoLayoutでは、ビューのフレームを直接操作することはできません。フレームを移動した後のある時点で、ビューの制約はそれを後ろに引っ込めることができます。

代わりに、アニメーション化するプロパティ(この場合はxとyの位置)を制御する制約を作成し、制約からビューコントローラのヘッダーにドラッグ&ドロップしてアウトレットを作成します。

次に、制約の定数値を変更し、アニメーションコード内のlayoutIfNeededを呼び出します。このような何か:

buttonXConstraint.constant = 100; 
buttonYConstraint.constant = 100; 

[UIView animateWithDuration:0.75 animations:^{ 
    [self.button layoutIfNeeded]; 
}]; 

上記のコードでは、2つの制約アウトレットを作成し、buttonXConstraintbuttonYConstraint彼らを呼んでいることを前提としています。

+0

これは正しい解答でなければなりません。さあ、2016年には誰もが制約を使わなければなりません。 AppleがフレームレイアウトのサポートをXcodeから完全に削除したのであれば、本当にうれしいだろう。 –

0

アニメーション表示に非常に便利なヘルパーメソッドです。

- (void) animateView:(UIView *)view ToFrame:(CGRect) frame withDuration:(float) duration withDelay:(float) startDelay 
{ 
    [UIView animateWithDuration:duration delay:startDelay options:0 animations:^{ 

     view.frame = frame; 
    } completion:^(BOOL finished) 
    { 
     // Completion actions 
    }]; 
} 
関連する問題