2012-02-25 19 views
3

基本的には、1つのビューに画像を持つアプリケーションを作成したいと考えています。私は左または右にスワイプして、最初のイメージをビューから外に出て、2番目のイメージを入力するようにしたいと思います。イメージは同じで、接続されているように見せたい(ロープをスクロールするパターンはちょうど繰り返されますが、一定のスクロールのように見えます)。画像を変更したり、一連のスワイプの後に再起動する必要があります。私はUIScrollViewでページネーションをオンにする必要があることを知っていますが、私はiOSを初めて使用していて問題があります。iOS:ページ分割を使って画像をスワイプする方法

最終的には、私はiPhoneをスワイプして(そしてパターンを再開させて)振動させたいと思っています。

これを行う方法はたくさんあります(TableViewなど)ので、解答が面倒であれば、参考文献の方向に私を指差してください。

ありがとうございます!

FOLLOW UP:

私は非常に近く、私がやりたいことやったアップルの例を見つけました。私はそれに多くの調整を加えましたが、私は壁に向かって頭を叩いて、イメージを循環させようとしています。ここでは、問題のコードだと思いますが、私は解決策が何であるか分かりません.ScrollViewは機能的なので、現在のビューに中心をリセットしないだけです。何か案は?

- (void)layoutScrollImages 
{ 
     UIImageView *view = nil; 
     NSArray *subviews = [scrollView1 subviews]; 

    // reposition all image subviews in a horizontal serial fashion 
    CGFloat curXLoc = 0; 
    for (view in subviews) 
    { 
     if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) 
     { 
      CGRect frame = view.frame; 
      frame.origin = CGPointMake(curXLoc, 0); 
      view.frame = frame; 

      curXLoc += (kScrollObjWidth); 
     } 
    } 

    // set the content size so it can be scrollable 
    [scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)]; 

} 

答えて

6

私はUIScrollViewのを使用すると思います。 contentWidthをビューの幅/高さの3倍(3ページ分)に設定し、contentOffsetを中央 'ページ'(view.bounds.size.widthまたはview.bounds.size.height)に設定します。それぞれ水平/垂直方向にスクロールするかどうかによって異なります。 UIScrollView(おそらくビューコントローラ)のデリゲートをセットアップし、- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollViewを実装する必要があります。スクロールビューの減速が終了すると呼び出されます。減速が終了したら、contentOffsetをセンタービューに戻します。これは、無限のスクロールの印象を与えるはずです。また、scrollViewDidEndDeceleratingメソッドでカウンタをインクリメントに設定して、カウンタをインクリメントしたり、振動を開始することもできます。

イメージの位置を変え続ける必要はありません。一度だけscrollViewの画像を設定します。

//Horizontal arrangement 
UIImage *image = [UIImage imageNamed:@"nameOfImage.png"]; 
UIImageView *imageView1 = [[UIImageView alloc] initWithImage:image]; 
UIImageView *imageView2 = [[UIImageView alloc] initWithImage:image]; 
UIImageView *imageView3 = [[UIImageView alloc] initWithImage:image]; 
NSArray *imageViews = [NSArray arrayWithObjects:imageView1, imageView2, imageView3]; 
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; 
[self.view addSubview: scrollView]; //This code assumes it's in a UIViewController 
CGRect cRect = scrollView.bounds; 
UIImageView *cView; 
for (int i = 0; i < imageViews.count; i++){ 
    cView = [imageViews objectAtIndex:i]; 
    cView.frame = cRect; 
    [scrollView addSubview:cView]; 
    cRect.origin.x += cRect.size.width; 
} 
scrollView.contentSize = CGSizeMake(cRect.origin.x, scrollView.bounds.size.height); 
scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, 0); //should be the center page in a 3 page setup 

を画像が設定されているので、あなたは、もはやそれを台無しにする必要はありません。 (:あなたは、スクロールビューのデリゲートしていることを確認する必要があるか、スクロールビューが停止したときに、あなたがメッセージを受信して​​いないよ注):ちょうどスクロールビューが停止したときにcontentOffsetをリセット

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 
    scrollView.contentOffset = CGPointMake(scrollview.bounds.size.width, 0); 
} 

はご容赦ください任意のタイプミス。私は手でそれを書きました。

+0

偉大な答えをありがとう。私はそれをすべて試してみましょう – Sneagan

+0

私がやりたいことに非常に近いAppleの例が見つかりました。私はそれに多くの調整を加えましたが、私は壁に向かって頭を叩いて、イメージを循環させようとしています。ここでは、問題のコードだと思いますが、私は解決策が何であるか分かりません.ScrollViewは機能的なので、現在のビューに中心をリセットしないだけです。何か案は? コードは上記のとおりです。 – Sneagan

+0

これは素晴らしいですね。 NSArrayが1つ不足している理由を知ったら、それはうまくいくはずです(私の検索結果から、NSArrayをサブクラス化することと、センチネル問題が関係しているようです)。それに伴う問題は私の経験レベルを示すもので、あなたのやり方ではありません)。私はあなたにこれを与えてくれた助けに本当に感謝しています。 2つのコードブックを終えた後、私はこの方法を学ぶことが最善で、あなたは大きな助けになったと決めました。 – Sneagan

1

カスタムフォトアルバムビューのcocoacontrols.comの表情。振動については、このコードスニペットは、(あなたがにリンクさせると#import <AudioToolbox/AudioToolbox.h>)電話を振動:

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 
+0

ありがとうございます!私は間違いなくそれを使用しています。 – Sneagan

+0

問題ありません。絶対に必要でない限り、私の推奨は電話を振動させることではありません。それは一種の迷惑です! – CodaFi

+0

私はおそらくそれを設定にしてしまうでしょう。私は静かに住んでいるので、誰にでも振動を与えません。 :) – Sneagan

関連する問題