2010-08-05 23 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; 
    } 

}