如何使用 UIScrollView 捕捉缩放?

Posted

技术标签:

【中文标题】如何使用 UIScrollView 捕捉缩放?【英文标题】:How to snap to zoom with UIScrollView? 【发布时间】:2011-08-12 13:58:27 【问题描述】:

我有一个带有内容视图的 UIScrollView,用户可以放大/缩小。最小缩放级别小于 1,最大缩放级别大于 1。

用户可以轻松地完全放大或完全缩小。我该怎么做才能让 UIScrollView 也捕捉到缩放级别 1?不仅在用户抬起手指时,而且在他们放大/缩小时也是如此。

【问题讨论】:

【参考方案1】:

编写一个方法,每次用户停止缩放时都会调用该方法,然后检查当前缩放比例是否非常接近 1.0(例如介于 0.8 和 1.2 之间的某个值)。如果返回 true,则缩放比例精确设置为 1.0 以进行捕捉。

【讨论】:

这可行,但我也希望它在用户捏合时捕捉到缩放级别,以帮助缩放。我已编辑问题以反映这一点。 为什么不让 NSTimer 在用户捏合并调用相同方法时每隔 x 十分之一秒(左右)关闭一次? 我刚试过......它最终会阻止你缩放,除非你快速缩放:(。 好的,我在你缩放时进行了捕捉,默认情况下,滚动视图在你滚动时也不会捕捉,而是在你让动画回到可接受的位置时去。我使用了这个代码:- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale if (scrollView.zoomScale > 0.9f && scrollView.zoomScale < 1.1f) [scrollView zoomToRect:scrollView.frame animated:YES]; 完美运行。【参考方案2】:

诀窍是覆盖或禁用捏并添加您自己的。开始捏合手势时,在捏合完成之前不要更新显示和调整图像大小,然后发出 zoomToRect。

【讨论】:

以上是关于如何使用 UIScrollView 捕捉缩放?的主要内容,如果未能解决你的问题,请参考以下文章

捕捉 UIScrollView 的可见部分后裁剪图像的透明部分

如何在 UICollectionViewCell 内缩放 UIScrollView?

如何跟踪缩放的 UIScrollView?

不使用 UIScrollview 缩放 UIView

如何缩放 UIImage 以适应 UIScrollView 的尺寸?

如何在 UIScrollView 内使用 Autolayout 将 UIImage 视图缩放为正方形