iOS做一个iPhone相册,每个图片都能放大缩小并且翻到第⼆张图时,再翻回来就变成原来的大 ⼩.使⽤UIPageControl与UIScrollView结合.

来源:互联网 发布:flotherm软件免费下载 编辑:程序博客网 时间:2024/05/22 21:58

思路:

⼀个UIScrollView上只能缩放一个子视图,那如何实现每张图片都可以缩放?———一个大的UIScrollView上放多个小的UIScrollView,每个小的UIScrollView上放一张图片 


-(void)dealloc{

    self.scrollView = nil;

    self.scrollView1 = nil;

    self.pageControl = nil;

    [super dealloc];

}

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    [self layoutScrollView];

    

}


- (void)layoutScrollView{

    

    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];

    self.scrollView.contentSize = CGSizeMake(kScreenWidth * 6, kScreenHeight);

    self.scrollView.scrollEnabled = YES;

    self.scrollView.pagingEnabled = YES;

    self.scrollView.showsHorizontalScrollIndicator = NO;

    self.scrollView.showsVerticalScrollIndicator = NO;

    self.scrollView.delegate = self;

    self.scrollView.tag = 300;

    

创建小的scrollView,放到大的scrollView上,并把图片放到小的scrollView上

    for (int i = 0; i < 6; i++) {

        self.scrollView1 = [[UIScrollView alloc] initWithFrame:CGRectMake(kScreenWidth * i, 0, kScreenWidth, kScreenHeight)];

        self.scrollView1.contentSize = CGSizeMake(kScreenWidth, kScreenHeight);

        self.scrollView1.pagingEnabled = YES;

        self.scrollView1.delegate = self;

        self.scrollView1.tag = 200 + i;

        self.scrollView1.maximumZoomScale = 4.0;

        self.scrollView1.minimumZoomScale = 0.5;

        [self.scrollView addSubview:self.scrollView1];

        

        UIImageView *imageV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, kScreenWidth, kScreenHeight / 3)];

        NSString *imageName = [NSString stringWithFormat:@"p%d", i + 1];

        NSString *filePath = [[NSBundle mainBundle] pathForResource:imageName ofType:@"jpg"];

        imageV.image = [UIImage imageWithContentsOfFile:filePath];

        imageV.tag = 100 + i;

        [self.scrollView1 addSubview:imageV];

        [imageV release];

        [self.scrollView1 release];

    }

    [self.view addSubview:self.scrollView];

    [self.scrollView release];

    

}


#pragma mark - ScrollViewDelegate

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

    for (UIScrollView *v in scrollView.subviews) {

        return v;

    }

    return nil;

}


判断的时机是在视图滑动结束的时候

判断视图有没有显示在当前页面,如果在就不做任何操作,如果不在当前页面,就遍历scrollView上的子视图上的视图,把它们的放大倍数设为1.0.

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

        if (scrollView == self.scrollView) {

            CGFloat x = scrollView.contentOffset.x;

            if (x == offSet) {

    

            }else{

                offSet = x;

                for (UIScrollView *view in scrollView.subviews) {

                    if ([view isKindOfClass:[UIScrollView class]]) {

                        [view setZoomScale:1.0];

                    }

                }

            }

        }

   //这个方法会在界面返回之后才改变,不好

//    NSInteger curentPage = scrollView.contentOffset.x / kScreenWidth;

//    UIScrollView *nowScrollerView = (UIScrollView *)[self.scrollView viewWithTag:200 + curentPage];

//    if (nowScrollerView.zoomScale != 1.0 && curentPage != _Page) {

//        [nowScrollerView setZoomScale:1.0];

//    }

//    _Page = curentPage;

}




0 0
原创粉丝点击