0

我有主UIScrollView

mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 440)];
mainScrollView.pagingEnabled = YES;
imageScrollView.contentSize = CGSizeMake(320 * [myImage count], 440);

, 其中包含许多 sub UIScrollView, 每个 subUIScrollView包含UIImageView

for (int i = 0; i < [myImage count]; i++)
{
    imageView = [[UIImageView alloc] init];
    [imageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];

    NSString *strimage = [myImage objectAtIndex:i];
    NSURL *imageUrl = [NSURL URLWithString:strimage];

    [imageView setImageWithURL:imageUrl placeholderImage:[UIImage imageNamed:@"Placeholder"]];

    imageView.frame = CGRectMake(0, 0, 320, 440);

    subScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(320 * i, 0, 320, 440)];
    subScrollView.contentSize =
    CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
    subScrollView.pagingEnabled = YES;
    subScrollView.showsHorizontalScrollIndicator = NO;
    subScrollView.showsVerticalScrollIndicator = NO;
    subScrollView.delegate = self;
    subScrollView.bouncesZoom = YES;
    subScrollView.clipsToBounds = YES;

    subScrollView.maximumZoomScale = 3.0;
    subScrollView.minimumZoomScale = 1.0;
    subScrollView.zoomScale = 1.0;

    [mainScrollView addSubview:subScrollView];
    [subScrollView addSubview:imageView];
}

,我实现

#pragma mark UIScrollViewDelegate methods

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return imageView;
}

问题是当我放大时UIImageView,假设有 3 个 sub UIScrollView,最后一个 subUIScrollView可以UIImageView正常缩放,但是当我放大另外 2 个时,它会缩放 subUIScrollView而不是UIImageView,并且它会影响最后一个 subUIScrollView也缩放,我是不是做错什么了吗?

我怀疑在 viewForZoomingInScrollView 中,它只是最后一次缩放UIImageView(最后一个 sub UIScrollView)。

先感谢您 :)

4

1 回答 1

1

最后我想通了,我只需要UIImageView在放大特定的UIImageView In - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 时更新我的​​,如下所示:

#pragma mark -
#pragma mark UIScrollViewDelegate methods

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    for (UIImageView *iv in [scrollView subviews]) {
        imageView = iv;
        break;
    }

    return imageView;
}

希望它可以帮助像我一样在这一点上挣扎的人,所以您不必浪费时间:)。

于 2012-10-15T08:06:18.970 回答