Hi!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.
Hi ankit 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; }
}