iPhone UIScrollView和UIImageView - 设置初始缩放

7

我使用以下代码将图像加载到滚动视图中。该图像始终以100%缩放加载。是否有一种方法可以设置它加载到另一个缩放级别,比如0.37?

我尝试了scrollView.zoomScale = .37,但似乎没有起作用。

UIImageView *tempImage = [[UIImageView alloc]initWithImage:[UIImage imageWithData:data]];
        self.imageView = tempImage;

        scrollView.contentSize = CGSizeMake(imageView.frame.size.width , imageView.frame.size.height);
        scrollView.maximumZoomScale = 1;
        scrollView.minimumZoomScale = .37;
        scrollView.clipsToBounds = YES;
        scrollView.delegate = self;

        [scrollView addSubview:imageView];
5个回答

18

只有在实现了 viewForZoomingInScrollView: 代理回调时,缩放才能正常工作。

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

13

我弄明白了...在加载图像更改代码之前,我使用了 scrollView.zoomScale = 0.37;,现在它运行得很好。

UIImageView *tempImage = [[UIImageView alloc]initWithImage:[UIImage imageWithData:data]];
self.imageView = tempImage;

scrollView.contentSize = CGSizeMake(imageView.frame.size.width , imageView.frame.size.height);
scrollView.maximumZoomScale = 1;
scrollView.minimumZoomScale = .37;
scrollView.clipsToBounds = YES;
scrollView.delegate = self;
[scrollView addSubview:imageView];
scrollView.zoomScale = .37;

3

2
但请注意,正如Brodie4598所提到的,在将imageView添加到scrollView之后才应执行此操作。 - pm_labs
请注意,当您设置zoomScale属性时,代理的viewForZoomingInScrollView:方法将被调用,因此您需要确保在该点返回正确的视图。 - Clafou
@paul_sns所说的非常重要。我在缩放滚动视图时出现了奇怪的行为。这是因为我在设置缩放比例后设置了图像。 - Ispas Claudiu

1
我遇到了同样的问题...
我使用了内置方法:scrollViewForImage

这将把初始缩放级别设置为5

[self.scrollViewForImage setZoomScale:5 animated:YES];

最小缩放级别的代码

self.scrollViewForImage.minimumZoomScale=1;

最大缩放级别的代码

self.scrollViewForImage.maximumZoomScale=12.0;

希望这能有所帮助。

0

在视图显示之前必须设置初始缩放,而不是在视图加载时进行设置,以使其正常工作。


1
我不明白你的意思,请清晰地解释一下。 - Nejat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接