2012-02-25 176 views
5

我有一個內容大小爲1200x480的UIScrollView。我有一些圖像視圖,它的寬度總和爲600.當向右滾動時,我只是增加內容大小並設置偏移量以使一切順利(然後我想添加其他圖像,但這並不重要馬上)。所以基本上,當前在視口中的圖像保持在左側的某個位置,最終從超級視圖中移除。無限水平滾動UIScrollView

現在,我向左滾動時發生的問題。我所做的是將圖像移動到內容大小的末尾(因此,將600添加到每個圖像視圖的origin.x),然後相應地設置內容偏移量。當手指在屏幕上並且用戶拖動時(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)]; 
    } 
} 

編輯:這是現在的工作 - 我看了一下StreetScroller,現在一切都很好。

但是,我現在想放大滾動視圖,但viewForZoomingInScrollView永遠不會被調用。放大內容大小的滾動視圖無法放大嗎?

+0

有人請嗎? :) – 2012-02-25 13:33:54

回答

5

這裏有一些方法漂浮。只要使用網站搜索...

如果你想要一個更「正式」的例子由Apple創建看看StreetScroller Demo。有關此示例的更多信息,請參閱WWDC去年的會議編號。 104 高級滾動視圖技術

還有Github上的UIScrollView的子類,稱爲BAGPagingScrollView,作爲尋呼&無限的,但它必須解決你自己的一些錯誤,因爲它不是正在積極開發(尤其是goToPage:方法導致的問題) 。

+0

謝謝:)我看了一下StreetScroller,它使用recenterIfNecessary方法完美地工作。 – 2012-02-25 15:48:12

+0

很高興到這裏! – dom 2012-02-25 15:51:59

+0

謝謝:)我想放大我的滾動視圖,但viewForZoomingInScrollView永遠不會被調用。我有userInteractionEnabled設置爲YES。 – 2012-02-25 16:18:51