2010-08-05 4 views
1

У меня есть массив изображений URl из этого массива, я отобразил мои изображения в Scrollview, потому что я хочу воспользоваться преимуществами пейджинга и масштабирования, так что я должен сделать для достижения этой задачи? Предположим, что мой массив содержит 10 URL-адресов, а затем каждый раз прокрутка, я должен получить другое изображение, и я мог бы также выполнять масштабирование и масштабирование любого из 10 изображений, поэтому, пожалуйста, дайте мне некоторые рекомендации для достижения моей задачи. Спасибо в Advance.Как я могу обеспечить Zoomin-Zoomout, функцию пейджинга в UIScrollView?

+0

и вашу попытку или уровень понимания есть? – Hailwood

+0

Я действительно реализовал scrollview и пейджинг, также работая над проблемой Zooing. –

ответ

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

} 
Смежные вопросы