启用UIScrollView的分页和滚动功能后,如何实现缩放功能?

4

我有一个UIScrollView,我用一组图片加载它,以便我可以滚动浏览图片,并产生类似于IOS中的照片效果的效果。 我正在使用以下代码:

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path = [paths objectAtIndex:0];
    NSString *imageFilePath = [path stringByAppendingPathComponent:@"newPics"];
    fileExists   = [[NSFileManager defaultManager] fileExistsAtPath:imageFilePath];
    if(fileExists){

        imgs=[[NSMutableArray  alloc]init];


    [imgs addObject:[UIImage imageWithContentsOfFile:[path stringByAppendingPathComponent:@"newPics/pic1.png"]]];
    [imgs addObject:[UIImage imageWithContentsOfFile:[path stringByAppendingPathComponent:@"newPics/pic2.png"]]];
    [imgs addObject:[UIImage imageWithContentsOfFile:[path stringByAppendingPathComponent:@"newPics/pic3.png"]]];
    [imgs addObject:[UIImage imageWithContentsOfFile:[path stringByAppendingPathComponent:@"newPics/pic4.png"]]];


    CGSize imageSize;
    imageSize.height = 648;
    imageSize.width = 927;
    self.scroll1.frame = CGRectMake(0,0,imageSize.width,imageSize.height);

    self.scroll1.contentSize = CGSizeMake(imageSize.width * imgs.count, imageSize.height );
    self.scroll1.minimumZoomScale=1.0;
    self.scroll1.maximumZoomScale=3.0;
    self.scroll1.pagingEnabled = YES;


    self.scroll1.delegate=self;

    CGFloat xPos = 0.0;

    for (UIImage *image in imgs) {
        imageView = [[UIImageView alloc] initWithImage:image];
        imageView.frame = CGRectMake(xPos, 0.0, imageSize.width, imageSize.height);
        [self.scroll1 addSubview:imageView];
        xPos += imageSize.width;

    }


    }

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    int positionScrollPrim = scrollView.contentOffset.x;

    int positionScroll = positionScrollPrim / 927 ;

    imageView = [[UIImageView alloc] initWithImage:[imgs objectAtIndex:positionScroll]];
    //UIImage *tmep =  [imgs objectAtIndex:1];

    return imageView;
}

我无法获得正确的结果,反而出现了一些奇怪的行为,例如不正确的缩放和尝试缩放时无法滚动。我猜测我的问题在于viewForZoomingInScrollView部分,所以我尝试使用上面的代码来解决它。但是我就是无法让它工作。我错过了什么?


在viewForZoomingInScrollView中,您不应该返回一个新的实例,而应该从您的scrollView返回现有的子视图。 - fnc12
1个回答

6

常见的方法是使用两个滚动视图:外部一个滚动浏览图片,每张图片都包裹在另一个滚动视图中,该视图负责缩放。


我现在会尝试一下,谢谢你的回复。 - Elias Rahme
你能否提供一小段代码片段,以便了解如何处理它? - Elias Rahme
我尝试过了,但没有成功。要么是我迷失了方向,要么就是它本身无法工作。你能帮忙一下吗? - Elias Rahme
1
已经有几个库,例如AGPhotoBrowserCXPhotoBrowser,以及Stack Overflow上的示例,这些都可以帮助您理解方法。 - fluidsonic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接