2009-06-25 11 views
3

私はユーザーが画面上で「フリック」できるようにしたいと思うUIViewをいくつか持っています。それらはスクロールビューではありません。それらは単純にラスタイメージ(png)を含みます。誰かが私を始めるためにいくつかのサンプルコードなどを私に指摘できますか?何か「MoveMe」よりも重量が軽く、「フリック」(「ナッジ」またはドラッグアンドドロップ)を検出し、「フリック」の方向に視界を逃がすのに役立ちますか?UIImageViewを「フリック」する方法は?

おそらく過剰なOpenGL。可能であれば、私はコアグラフィックス/アニメーションの領域にいたいと思います。

答えて

0

、タッチを検出するためにビューコントローラでは、あなたがtouchesBeganとtouchesEndedメソッドを使用することができ、からタッチを保存しますtouchesBegan、タッチが左または右にいくらかの量以上移動した場合、それはフリックであって、左右に振ったものではありませんでした。

+0

はい、それはドラッグを必ずしもフリックと区別しません。おそらく私はより具体的であったはずです。誰かが「何かを拾う」と「落とす」という人は、それを「フリックする」(投げる)人とは違って扱われる必要があります。 – Meltemi

+0

「何かを拾う」と「落とす」と何かフリックするの違いは何ですか? – InFreefall

+0

あなたの机の上にコインを想像してください。あなたはそれを持ち上げてボウルに落とすか、それをあなたの机の別の部分に "フリック"させることができました。あなたはフリックでそれを加速し、 "重力"& "摩擦"はそれを休息に持って来る... – Meltemi

0

あなたはUIViewaViewと呼ばれ、2 UIImageViewspage1page2があるとします。あなたはaViewでサブビューとしてすでにpage1を持っていると仮定すると、このコードはpage2page1から反転します:

[UIView beginAnimations:@"someId" context:nil]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:aView cahe:YES]; 
[page1 removeFromSuperview]; 
[aView addSubview:page2]; 
[UIView commitAnimations]; 
+0

私が言うあたりの "ページ" 間を遷移ありませんよ。画面の一方の側から他方の側へ画像を投げようとするほどです。 – Meltemi

2

これを実装する簡単な方法は、ページングを有効にした状態でUIScrollViewコンテナにビューを配置し、すべての「フリック」アクションを心配させることです。私にとって素晴らしい作品です。

あなたはいくつかの追加の努力をしても、画像をレイジーに読み込むことができます。

+0

しかし、私はスクロール効果をしたくない。私は、オブジェクトが画面の境界内に収まるようにしたい。私はちょうど画面の片側から他の側にそれらを送信するために簡単なフリックのジェスチャーをしたい。フリックは動きの中でそれらを設定し、 "重力"& "摩擦"はそれらを遅らせるでしょう... – Meltemi

+0

スワイプを左または右に移動するだけで効果を消すことができたので、これは私の場合の完璧な解決策でした。 – Elise

1

これは、nazgul42の回答と、上記の2つのイベント間の時間を確認することで簡単に達成できると思います。短時間と長距離を組み合わせると、フリックとして解釈される可能性があります。両方のタッチイベントポイントの座標を計算することによって、フリックの方向を決定することもできます。

0

方法が私を心配が、私は、ここにスレッドを発見した -

http://discussions.apple.com/message.jspa?messageID=7862186

それは考慮にスピードやタイムスタンプを取ることはありません。最後のイベント更新以降の距離だけです。 Appleがイベントアップデートのフリークエンシー/細分性を変更した場合、このコードは破損する可能性があります。

0

UIPanGentureRecognizerサンプルコードを使用してみてください:

UIPanGestureRecognizer *imageGesture = [[UIPanGestureRecognizer alloc] 
             initWithTarget:self 
             action:@selector(imageDragged:)]; 
[imageView1 addGestureRecognizer:imageGesture]; 

その後、

- (void)imageDragged:(UIPanGestureRecognizer *)gesture{ 
UIImageView *imageView = (UIImageView *)gesture.view; 
CGPoint translation = [gesture translationInView:imageView]; 

imageView.center = CGPointMake(imageView.center.x + translation.x, 
           imageView.center.y + translation.y); 
imageView2.center = imageView.center; 
imageView3.center = imageView.center; 

[gesture setTranslation:CGPointZero inView:imageView];} 
関連する問題