2011-09-14 10 views
0

UIImageViewをパンすることは可能ですか?また、別のUIImageViewのフレームと交差すると、他のUIImageViewを他のUIImageViewにプッシュしてもらうことができますか?私はそれが理にかなったことを願う別のUIImageViewを使用してUIImageViewをプッシュできますか?

可能であれば、これを実装する方法についていくつか考えていただけますか?

は私が左または右のx/y軸に、プッシュフレームと同じ距離で同じ方向に他のフレームの動きを持っているから、フレームは、フレームと交差する

場合...それはのような何かを行くだろうと想像します。そのロジックは私にはいくらか意味がありますが、私はコードでどのように実装するのかは分かりません。

本当にありがとうございます。

+0

あなたは、スライドのような意味ですか? – booleanBoy

+0

ええと...私は基本的に、1つのUIImageViewを使用して、パンのジェスチャーが動いている方向に応じて、別のものを左または右にスライドさせる方法を探しています。 – Jason

+0

ユーザーがスワイプすると、現在のイメージは次のイメージで左にプッシュされますか? – booleanBoy

答えて

1

をCocos2Dのようなものを使用したいような音、あなたが唯一の右のパン/左に関係している...

ましょう他のUIViewのサブビューとして2つのUIImageViews、& bがあり、あるクラスのクラスメンバーとして定義されているとします。

あなたがUIPanGestureRecognizerのインスタンスを作成し、メソッドaddGestureRecognizerを使用して、各UIImageViewに追加することでこれらの各ビューに(タッチをドラッグ)パンジェスチャーを検出する助けを得ることができます

各UIPanGestureRecognizerを作成するとき、あなたはセレクターを指定する必要がありますジェスチャーイベントを受け取る。それはdidMoveと呼ばれるとしましょう:今すぐ

、いくつかのサンプルコード:

- (void) didMove:(UIPanGestureRecognizer*)recognizer { 
    UIView* view = [recognizer view]; 

    // Remember our UIImageViews are class members called, a & b 
    // 
    UIView* otherView = view == a ? b : a;  

    if (recognizer.state == UIGestureRecognizerStateBegin 
     || recognizer.state == UIGestureRecognizerStateChanged) { 

     // Moving left will have a negative x, moving right positive 
     // 
     CGPoint translation = [recognizer translationInView:view.superview]; 
     view.center = CGPointMake(view.center.x + translation.x, view.center.y); 

     // Reset so we always track the translation from the current view position 
     // 
     [recognizer setTranslation:CGPointZero inView:view.superview]; 

     if (CGRectIntersectsRect(view.frame, otherView.frame)) { 
      // Translate by the same number of points to keep views in sync 
      // 
      otherView.center = CGPointMake(otherView.center.x + translation.x, otherView.center.y); 
     } 
    } 
} 

それはあなたが必要な正確に何ではないかもしれないが、それはあなたにそれを行うことができるどのように良いアイデアを与える必要があります。

1

方が良いので...それのスプライト、交差点やいくつかの基本的な物理学で

+0

Cocos2Dを使用しないと、この機能は実際に実装するのが難しいでしょうか? – Jason

+0

多くの計算やカスタムアニメーションの汚い作業、それだけです。圧倒的な考えではありません。 – Ariel

1

あなたは、

まず、このようにそれを行うUIImageViewを作成し、それにUIImageを割り当てることができます。

第2に、ユーザーがスワイプしたりジェスチャーをしたりすると、フレームを再び設定してカードの座標を変更するだけです。

カードをスライドさせたいので、x座標を負の値に変更して、ビューからスライドさせる必要があります。

上記のイメージビューのリファームコードは、必要な遅延を持つメソッドのUIView setAnimationグループ内に指定する必要があります。

プッシュエフェクトを実現するには、新しい画像ビュー(最初の画像ビューと同じ名前を持つ)を作成し、ビューから外しておくコードの同じアニメーションブロック内で呼び出されるメソッドがあります。それは画面の幅を超えています。 (以前はプッシュしていたカードをリリースするのを忘れないでください)

次に、この画像ビューの新しいフレームを画面の中央に表示するようにします。上記の3つのコードステップが遅延時間を持つUIViewまたはUIImageViewのコードのアニメーションブロックは、必要な効果を達成します。このことができます

希望....幸せ

コーディング....

関連する問題