【问题标题】:scrollview sub uiscrollviews uiimageview viewForZoomingInScrollViewscrollview sub uiscrollviews uiimageview viewForZoomingInScrollView
【发布时间】:2012-10-03 03:12:15
【问题描述】:

我有主UIScrollView

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

,其中包含多个子UIScrollView,每个子UIScrollView包含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个子UIScrollView,最后一个子UIScrollView可以正常放大UIImageView,但是当我放大另外2个时,它会放大子@ 987654332@而不是UIImageView,它会影响最后一个子UIScrollView也被缩放,我做错了什么吗?

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

提前谢谢你:)

【问题讨论】:

  • 似乎我认为我将子 UIScrollView 分开但可能不是:(

标签: iphone objective-c ios uiscrollview uiscrollviewdelegate


【解决方案1】:

最后我想通了,当我放大特定的UIImageView 时,我只需要更新我的UIImageView 在 - (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;
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    相关资源
    最近更新 更多