当使用多个UIImageViews的pagingEnabled时,UIScrollView viewForZoomingInScrollView

时间:2011-01-24 13:40:28

标签: uiscrollview

我有这个带有pagingEnabled的UIScrollView,让用户在一些图像之间进行分页。 现在我想让用户放大每个图像。我怎么做?我现在有什么从它的原点放大我的UIScrollView,我需要它来放大每张图片,而不是UIScrollView的孔。

我现在拥有的:

UIScrollView* containerView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];

containerView.scrollEnabled = YES;
containerView.pagingEnabled = YES;

[containerView setMaximumZoomScale:2.0];
[containerView setDelegate:self];
self.view = containerView;

UIImage *imageOne = [UIImage imageNamed:image01];
UIImageView *viewOne = [[UIImageView alloc] initWithImage:imageOne];

viewOne.frame = CGRectMake(0, 44, 320, 480);
[containerView addSubview:viewOne];

UIImage *imageTwo = [UIImage imageNamed:image02];
UIImageView *viewTwo = [[UIImageView alloc] initWithImage:imageTwo];
viewTwo.frame = CGRectMake(320, 44, 320, 480);
[containerView addSubview:viewTwo];

UIImage *imageThree = [UIImage imageNamed:image03];
UIImageView *viewThree = [[UIImageView alloc] initWithImage:imageThree];
viewThree.frame = CGRectMake(640, 44, 320, 480);
[containerView addSubview:viewThree];

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

提前致谢

2 个答案:

答案 0 :(得分:2)

您必须返回滚动条中包含的视图。因为你有3个UIImage,试试这个......

在.h

UIView *auxView;

在.m

...
[auxView addSubview:imageOne];
[auxView addSubview:imageTwo];
[auxView addSubview:imageThree];

[containerView addSubview:auxView];
}

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)containerView{
return auxView;   }

我希望这可以帮到你

答案 1 :(得分:0)

我认为您的意思是想要逐个缩放每个UIImageView,对吧?

我几周来一直在努力解决这个问题,然后我决定写一堂课来解决这个问题 以下是本课程的github回购:https://github.com/windmemory/PhotoCollectionView

我对此问题的解决方案是创建单个UIScrollView以包含每个UIImageView,然后将这些UIScrollView添加到containerView

如果我们将所有UIImageView添加到单个视图中,然后将其缩放,当我们缩放一张照片时,所有这些照片都会缩放,然后contentSize会相应更改。一旦contentSize被更改,它将搞乱所有的分页事物。因此,我提出的最佳方式是使用UIScrollView来包含UIImageView,然后将每个UIScrollView放入containerView,这样您就可以分别缩放每张照片,不会搞乱你设置的所有分页内容。

希望这可以帮助你。