2010-08-05 51 views
1

我有一個從數組中的圖像URl的數組我已經在滾動視圖中顯示了我的圖像,因爲我想利用分頁和縮放,所以我應該怎麼做才能完成這個任務?假設我的數組包含10個URL,然後每次滾動我應該得到不同的圖像,我也可以執行縮放和縮小任何10個圖像,所以請給我一些指導方針,以實現我的任務。感謝提前。我如何提供Zoomin-Zoomout,分頁功能到UIScrollView?

+0

和您的嘗試或水平的理解是什麼? – Hailwood 2010-08-05 07:59:38

+0

我實際上已經實現了滾動視圖和分頁也工作問題是動物園。 – 2010-08-05 08:47:32

回答

0

試試這個

- (void)setCurrentPage:(NSUInteger)page { 
    if (page == offsetX) 
     return; 
    offsetX = page; 
    // in a real app, this would be a good place to instantiate more view controllers -- see SDK examples 
} 

- (CGSize)pageSize { 
    CGSize pageSize = scrollView1.frame.size; 
    if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) 
     return CGSizeMake(pageSize.height, pageSize.width); 
    else 
     return pageSize; 
} 

- (void)setPagingMode { 
    // reposition pages side by side, add them back to the view 
    CGSize pageSize = [self pageSize]; 
    NSUInteger page = 0; 
    for (UIView *view in imgViewArray) { 
     if (!view.superview) 
      [scrollView1 addSubview:view]; 
     view.frame = CGRectMake(pageSize.width * page++, 0, pageSize.width, pageSize.height); 
    } 

    scrollView1.pagingEnabled = YES; 
    scrollView1.showsVerticalScrollIndicator = scrollView1.showsHorizontalScrollIndicator = NO; 
    scrollView1.contentSize = CGSizeMake(pageSize.width * [imgViewArray count], pageSize.height); 
    scrollView1.contentOffset = CGPointMake(pageSize.width * offsetX, 0); 

    scrollViewMode = ScrollViewModePaging; 
} 

- (void)setZoomingMode { 
    NSLog(@"setZoomingMode"); 
    scrollViewMode = ScrollViewModeZooming; // has to be set early, or else currentPage will be mistakenly reset by scrollViewDidScroll 

    // hide all pages except the current one 
    NSUInteger page = 0; 
    for (UIView *view in imgViewArray) 
     if (offsetX != page++) 
      [view removeFromSuperview]; 

    scrollView1.pagingEnabled = NO; 
    scrollView1.showsVerticalScrollIndicator = scrollView1.showsHorizontalScrollIndicator = YES; 
    pendingOffsetDelta = scrollView1.contentOffset.x; 
    scrollView1.bouncesZoom = YES; 
}  

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView 
{ 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    { 
    // offsetX=(aScrollView.contentOffset.x)/768; 
    //NSLog(@"Page No:%d",offsetX); 
     if (scrollViewMode == ScrollViewModePaging) 
      [self setCurrentPage:roundf(scrollView1.contentOffset.x/[self pageSize].width)]; 


    } 
else 
{ 
    //offsetX=(aScrollView.contentOffset.x)/320; 
    //NSLog(@"Page No:%d",offsetX); 
    if (scrollViewMode == ScrollViewModePaging) 
     [self setCurrentPage:roundf(scrollView1.contentOffset.x/[self pageSize].width)]; 

} 
} 
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)aScrollView 
{ 
    NSLog(@"viewForZoomingInScrollView"); 
    if (scrollViewMode != ScrollViewModeZooming) 
     [self setZoomingMode]; 
    return [imgViewArray objectAtIndex:offsetX]; 

} 

- (void)scrollViewDidEndZooming:(UIScrollView *)aScrollView withView:(UIView *)view atScale:(float)scale { 
    NSLog(@"scrollViewDidEndZooming"); 
    if (scrollView1.zoomScale == scrollView1.minimumZoomScale) 
     [self setPagingMode]; 
    else if (pendingOffsetDelta > 0) { 
     UIView *view = [imgViewArray objectAtIndex:offsetX]; 
     view.center = CGPointMake(view.center.x - pendingOffsetDelta, view.center.y); 
     CGSize pageSize = [self pageSize]; 
     scrollView1.contentOffset = CGPointMake(scrollView1.contentOffset.x - pendingOffsetDelta, scrollView1.contentOffset.y); 
     scrollView1.contentSize = CGSizeMake(pageSize.width * scrollView1.zoomScale, pageSize.height * scrollView1.zoomScale); 
     pendingOffsetDelta = 0; 
    } 

}