我有一个画廊视图,我用它,惊喜,查看图像。 :)我希望它与具有相同基本功能的标准iOS照片应用程序非常相似:滚动可缩放的图像。为此,我使用常规滚动视图,然后使用包含图像的其他滚动视图填充该视图。基本思想是这样的:
而且,我按以下方式填写:
for (int i = 0; i < [imageGalleryArray count]; i++)
{
UIScrollView *imageContainer = [[UIScrollView alloc] initWithFrame:CGRectMake((windowSize.width * i), 0.0f, windowSize.width, windowSize.height)];
imageContainer.contentSize = CGSizeMake(windowSize.width, windowSize.height);
imageContainer.showsHorizontalScrollIndicator = NO;
imageContainer.showsVerticalScrollIndicator = NO;
imageContainer.bouncesZoom = YES;
imageContainer.delegate = self;
imageContainer.minimumZoomScale = 1.0f;
imageContainer.maximumZoomScale = 3.0f;
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, windowSize.width, windowSize.height)];
imageView.image = [[imageGalleryArray objectAtIndex:i] objectForKey:@"image"];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.tag = IMAGEZOOMVIEW;
imageView.opaque = YES;
[imageContainer addSubview:imageView];
[galleryScrollView addSubview:imageContainer];
// Add it to array for proper removal later
[contentScrollViewSubviewList addObject:imageContainer];
}
非常简单,工作正常。当我放大图像并想要滚动到另一个图像时,唯一的问题就出现了。在这种情况下,预期的行为是将所有图像的缩放级别设置回原始大小。我在scrollViewDidEndDecelerating委托方法中这样做:
if (scrollView.tag == GALLERYSCROLLVIEW)
{
for (int i = 0; i < [contentScrollViewSubviewList count]; i++)
{
[[contentScrollViewSubviewList objectAtIndex:i] setZoomScale:1.0f animated:YES];
}
}
不幸的是,它不起作用(或者更确切地说不是预期的)。我做了一些探测,发现当是活动幻灯片时,图像确实动画回原始大小。详细说明:如果我放大图像并滚动到另一个图像,图像会保持放大。当我向后滚动它时,就是当它缩放回原始尺寸时。但是,一旦我离开它(),我就需要缩小图像。 就像在iOS图像查看器中一样。)
坦率地说,我不了解整个缩放机制,无法找到如何正确执行此操作,UIScrollView文档也没有任何帮助。有人能告诉我如何解决我的问题吗?