【问题标题】:Enable zooming in a uiscrollview with paging enabled and scrolling enabled在启用分页和启用滚动的情况下启用 uiscrollview 的缩放
【发布时间】:2023-03-23 03:12:01
【问题描述】:

我有一个 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 中返回现有的子视图

标签: ios objective-c uiscrollview


【解决方案1】:

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

【讨论】:

  • 我现在就试一试,谢谢您的回复
  • 能否请您提供一个代码 sn-p 以了解如何处理?\
  • 我试过了,但是没用……要么我迷路了,要么没用,你能帮忙吗?
  • 已经有几个库,如 AGPhotoBrowserCXPhotoBrowserexamples on Stack Overflow,它们将帮助您理解该方法。
猜你喜欢
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
相关资源
最近更新 更多