UIScrollView 缩放:将平移限制为 imageView.image 边界

Posted

技术标签:

【中文标题】UIScrollView 缩放:将平移限制为 imageView.image 边界【英文标题】:UIScrollView Zoom: Limit panning to imageView.image bounds 【发布时间】:2015-01-16 00:04:06 【问题描述】:

我有一个屏幕大小的 UIScrollView 持有一个相同大小的 UIImageView。

我在 UIImageView 内使用 AspectFit 设置了一个图像,因此对于更宽的图像,顶部和底部都有黑条。这与缩小时的预期一致。

双击屏幕强制[self.scrollView setZoomScale:self.scrollView.maximumZoomScale animated:YES]; 这样做的问题是,在像上面提到的那样的图像上,我可以平移远远超出照片的边缘。

我认为这是因为我在 (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollViewreturn imageView; 并且 imageView 的高度比图像高,所以我可以平移到 imageView 的顶部和底部,而忽略其内容。

那么,如何将滚动视图的平移限制在图像的范围内?

【问题讨论】:

【参考方案1】:

你需要使用这个:Emulating aspect-fit behaviour using AutoLayout constraints in Xcode 6

方面适合自动布局。然后,如果图像大小不同,则需要在加载图像时添加纵横比约束。你会得到一个错误,缩放后的图像粘在右边缘。还是解决不了。

【讨论】:

【参考方案2】:

只需通过此代码将滚动视图的内容大小设置为图像大小:

scrollView.contentSize = [scrollView imageView].image.size;

请注意,您应该在为滚动视图 imageView 设置图像时执行此操作。

【讨论】:

以上是关于UIScrollView 缩放:将平移限制为 imageView.image 边界的主要内容,如果未能解决你的问题,请参考以下文章

缩放后无法平移 UIScrollView

UIScrollView 直到缩放用户操作后才平移

UIScrollView 显示第一张图像正常,但后续图像缩放和平移不正确

使用UIScrollView滚动平移和缩放

无法在 UIScrollView 中缩放图像

在单个视图中一次缩放和平移两个图像