【发布时间】:2014-05-01 14:19:58
【问题描述】:
我有一个可分页的 UIScrollView,其中包含不同类型的信息,例如 UITables,但也包含可缩放的图像。因此,我设置了一个可分页的 main-ScrollView 并作为子视图添加了可缩放的 image-ScrollViews,并将图像作为内容。 一切正常,只是我无法设置 imageScrollViews 的较小当前缩放比例。
UIImageView *imageView = [[UIImageView alloc] initWithImage:Image];
//storing a link to the imageView
[imagelinkArray addObject:imageView];
CGRect ScrollViewImageRect;
ScrollViewImageRect = CGRectMake((self.scrollView.frame.size.width) * i, 0, 320, self.scrollView.frame.size.height);
float widthfactor = ScrollViewImageRect.size.width / imageView.frame.size.width;
float heightfactor = ScrollViewImageRect.size.height / imageView.frame.size.height;
float zoomscale = MIN(widthfactor, heightfactor);
UIScrollView *imageScrollView = [[UIScrollView alloc] initWithFrame:ScrollViewImageRect];
imageScrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
imageScrollView.delegate = self;
[imageScrollView setMinimumZoomScale:zoomscale];
[imageScrollView setMaximumZoomScale:1.5];
[imageScrollView addSubview:imageView];
//doesn't work:
[imageScrollView setZoomScale:0.5 animated:YES];
[self.scrollView addSubview:imageScrollView];
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return [imagelinkArray objectAtIndex:page];
}
main-ScrollView 和 image-ScrollViews 绘制完美,可以正常缩放和分页。计算的最小缩放系数也是正确的。当我缩小时,我可以放大直到达到图像限制。然而,当我第一次翻页到 image-ScrollView 时,它的当前缩放比例始终为 1.0,而它应该是最小比例。
无论我在上面的代码中设置缩放比例,它都不起作用:
[changeScrollView setZoomScale:changeScrollView.minimumZoomScale animated:YES];
如果我记录当前缩放比例,我总是得到 1.0;
唯一有效的是在- (void)scrollViewDidScroll: 方法中更改缩放比例,这当然没有多大帮助,因为缩放也会调用它来立即重置缩放。但至少我可以弄清楚,代码以某种方式工作。我感觉 UIScrollView 现在在屏幕上不可见时不会缩放。我该如何解决这个问题?
更新: 好的。与此同时,我发现问题很可能来自我将“子查看”ScrollViews 到另一个 ScrollView 的基本布局。当我缩放其中一个图像并记录 ScrollViews 的当前缩放因子时,它们都是相同的(主 ScrollView 以及所有子 ScrollViews)。 可能是什么原因,或者我该如何使用不同的布局来解决它?
【问题讨论】:
标签: ios uiscrollview zooming scrollview