1

I have an array of Image URl's from that array i have displayed my Images in Scrollview because i want to take the advantage of Paging and zooming so what should i do to achieve this task?suppose my array contains 10 URL then by each time scrolling i should get different image and i could also performing Zooming-In and Zooming-Out any of the 10 Images so please give me some guidelines to achieve my task.Thanks in Advance.

Ankit Vyas
  • 7,507
  • 13
  • 56
  • 89

1 Answers1

0

Try this

- (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;
    }

}
Maulik
  • 19,348
  • 14
  • 82
  • 137