我如何在UIScrollView中提供Zoomin-Zoomout,Paging功能? [英] How can i provide Zoomin-Zoomout,Paging functionality in to UIScrollView?

查看:52
本文介绍了我如何在UIScrollView中提供Zoomin-Zoomout,Paging功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个来自该数组的图像URl数组,我已经在Scrollview中显示了我的图像,因为我想利用分页和缩放的优势,所以我应该怎么做才能完成此任务?假设我的数组包含10个URL,然后每个URL时间滚动时,我应该得到不同的图像,并且我还可以执行放大"和缩小"这10张图像中的任何一张,所以请给我一些指导方针以完成任务.谢谢.

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.

推荐答案

尝试一下

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

}

这篇关于我如何在UIScrollView中提供Zoomin-Zoomout,Paging功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆