2012-02-25 23 views
5

コンテンツサイズが1200x480のUIScrollViewがあります。右にスクロールすると、内容のサイズを大きくしてオフセットを設定して、すべてをスムーズにする(私は他の画像を追加したいが、それは重要ではないたった今)。したがって、基本的に、現在ビューポートにある画像は左のどこかに残り、最終的にスーパービューから削除されます。無限水平スクロールUIScrollView

今、左に向かってスクロールするときに発生する問題があります。私が行うことは、画像をコンテンツサイズの最後に移動することです(各画像ビューのorigin.xに600を追加してから、それに応じてコンテンツオフセットを設定します)。指が画面上にあり、ユーザーがドラッグすると機能します(scrollView.isTracking = YES)。ユーザーが左方向にスクロールして行くと(scrollView.isTracking = NO)、画像ビューは右に向かって速すぎる動きをし、ほとんど瞬時に消えます。誰もが、画像を素早く動かす方法を知っていて、ユーザーが手動でビューをドラッグしていなくても消えていなくても消えませんか?ここで

が水平方向にドラッグするために私のコードです:

-(void) scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint offset = self.scrollView.contentOffset; 
    CGSize size = self.scrollView.contentSize; 

    CGPoint newXY = CGPointMake(size.width-600, size.height-480); 

    // this bit here allows scrolling towards the right 
    if (offset.x > size.width - 320) { 
     [self.scrollView setContentSize:CGSizeMake(size.width+320, size.height)]; 
     [self.scrollView setContentOffset: offset]; 
    } 

    // and this is where my problem is: 
    if (offset.x < 0) { 
     for (UIImageView *imageView in self.scrollView.subviews) { 
      CGRect frame = imageView.frame; 
      [imageView setFrame:CGRectMake 
       (frame.origin.x+newXY.x, frame.origin.y, 200, frame.size.height)]; 
     } 
     [self.scrollView setContentOffset:CGPointMake(newXY.x+offset.x, offset.y)]; 
    } 
} 

EDIT:これは今働いている - 私はStreetScrollerを見ていたし、それは今、すべての良いことです。

しかし、私は現在、スクロールビューを拡大したいですが、viewForZoomingInScrollViewは決して呼び出されません。大きなコンテンツサイズのスクロールビューを拡大することはできませんか?

+0

誰でもどうぞ! :) –

答えて

5

ここにはいくつかのアプローチがあります。サイトの検索をご利用ください...

アップル社が作成した「公式」な例がもっと必要な場合は、StreetScroller Demoをご覧ください。この例の詳細については、最後の年のWWDCセッション番号を参照してください。 104 アドバンスドスクロールビューテクニック。 (特にgoToPage:方法が問題となる)

のGithub上のUIScrollViewのサブクラスでもありますが、無限&をページングされ、BAGPagingScrollViewと呼ばれるが、それは活発に開発中ではありませんので、それは、あなたが自分で解決しなければならないいくつかのバグを持っています。

+0

ありがとう:)私はStreetScrollerを見てきましたが、recenterIfNecessaryメソッドを使用するだけで完璧に動作します。 –

+0

これまでよかった! – dom

+0

ありがとう:)私は自分のスクロールビューをズームしたいですが、viewForZoomingInScrollViewは呼び出されません。私はuserInteractionEnabledをYESに設定しています。 –

関連する問題