iOS:UIScrollView以编程方式缩放不起作用

use*_*551 4 zoom scrollview uiscrollview ios

我有一个可分页的UIScrollView,它包含不同类型的信息,如UITables,还有可缩放的图像.因此,我设置了一个可分页的主ScrollView,作为子视图,我添加了zoomable 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];
}
Run Code Online (Sandbox Code Playgroud)

主ScrollView和图像ScrollViews完美绘制,可以正确缩放和页面.计算最小缩放系数也是正确的.当我缩小时,我可以缩放,直到达到图像限制.然而,当我第一次访问图像-ScrollView时,它的当前缩放比例总是1.0,而它应该是最小比例.

无论我在上面的代码中设置缩放比例,它都不起作用:

[changeScrollView setZoomScale:changeScrollView.minimumZoomScale animated:YES];
Run Code Online (Sandbox Code Playgroud)

如果我记录当前的缩放比例,我总是得到1.0;

唯一有效的方法是改变方法中的缩放比例- (void)scrollViewDidScroll:,这当然没有多大帮助,因为缩放也会调用它来立即重置缩放.但至少我可以弄明白,代码以某种方式运作.我觉得UIScrollView在屏幕上现在不可见时不会缩放.我怎样才能解决这个问题?

更新: 好的.与此同时,我发现这个问题最有可能来自我的"子视图"ScrollViews到另一个ScrollView的基本布局.当我缩放其中一个图像并记录ScrollViews的当前缩放系数时,它们都是相同的(主ScrollView以及所有子ScrollViews).可能是什么原因或我如何用不同的布局解决它?

Riv*_*era 6

我想viewForZoomingInScrollView:可能不会被scrollview调用.尝试添加断点并检查您在那里返回的内容.