2014-01-17 80 views
2

嗨我有10個圖像在UIScrollview現在我可以向前滾動像從1到2,3,4等,但在我的項目中,我需要滾動圖像向後的方向也從1到10左手邊 這是我的代碼Backward Scroll

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

{ 
CGFloat pageWidth = cardsScrollView.frame.size.width; 
NSUInteger page = floor((self.cardsScrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    if(page + 1 == [flashCardArry count]){ 
     for (NSUInteger i = 0; i < [flashCardArry count]; ++i) { 
      int nElements = [flashCardArry count] - i; 
      int n = (arc4random() % nElements) + i; 
      [flashCardArry exchangeObjectAtIndex:i withObjectAtIndex:n]; 
     } 
    [self.cardsScrollView scrollRectToVisible:CGRectMake(self.cardsScrollView.frame.size.width * 0 , 0, self.cardsScrollView.frame.size.width, self.cardsScrollView.frame.size.height) animated:NO]; 
    } 


-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 

    CGFloat pageWidth = cardsScrollView.frame.size.width; 

NSUInteger page = floor((self.cardsScrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
+0

所以據我瞭解,你需要有循環滾動視圖添加更多2個或更多的假項目的金額是多少?我的意思是,用戶應該能夠從左到右,從右到左自由滾動? –

+0

是Kilew正是我需要你認爲 –

+0

可能重複的[UIScrollView無限滾動](http://stackoverflow.com/questions/3430267/uiscrollview-infinite-滾動) –

回答

0

你可以簡單地做到這一點,從10加入imageViews 1你的滾動視圖,然後你必須SE中的contentOffset你滾動型指向是像1 所以最後的圖像用戶無法在第一時間向右滾動,他可以滾動到下一張圖像的左側。

+0

謝謝,但我需要在兩個方向滾動,當我到達最後的圖像比我移動到1現在我想去最後在後面的方向 –

+0

@ user3205449因此,當你在圖像1上它會滾動到上次滾動。你不必做任何額外的設置,因爲它可以適用於這兩個方向。 –

0

所以。在情況下,如果你想循環滾動視圖,你將需要未來的東西:

1)隱藏滾動視圖指標

scrl.showsHorizontalScrollIndicator = NO; 
scrl.showsVerticalScrollIndicator = NO; 

2)在結束

添加一個項目滾動視圖的開始,而一個項目
[5'] | [0][1][2][3][4][5] | [0'] 
     | --- full_size--- | 

3)一旦用戶滾動到5' 項目我們更新內容通過添加full_size

4)一旦用戶滾動到0' 偏移我們更新內容通過減去偏移full_si項澤

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGPoint contentOffset = scrollView.contentOffset; 
    // First item 
    if (contentOffset.x < page_size) { // We are now faking last page 
     scrollView.contentOffset += full_size; // Jumping to actual last page 
    } 

    // Last item 
    if (contentOffset.x > full_size) { // We are now faking first page 
     scrollView.contentOffset -= full_size; // Jumping to actual first page 
    } 

} 

5)爲了減少跳躍(特別是在邊界),可以從兩側

+0

其實這裏已經有答案了:http://stackoverflow.com/questions/3430267/uiscrollview-infinite-scrolling –

+0

你好我們在這裏使用了page_size和full_size。這些變量是什麼? –

+0

如果您有可分頁的內容,page_size只是一個頁面的大小(在此示例中爲寬度)。 full_size - 是所有頁面的總寬度。 –