防止在 UIScrollView 的最大/最小缩放时重绘屏幕

Posted

技术标签:

【中文标题】防止在 UIScrollView 的最大/最小缩放时重绘屏幕【英文标题】:Preventing screen redraw at max/min zoom of UIScrollView 【发布时间】:2012-07-05 17:51:19 【问题描述】:

我的应用有一个相对昂贵的屏幕重绘。在其原始形式中,我们将 UIScrollview 的最小缩放设置为 100%,将最大缩放设置为 400%,在 scrollViewDidEndZooming 中,我们重绘屏幕。

我们的测试人员编写了一个错误,即当用户继续捏合超出最小或最大缩放级别时,屏幕仍然会闪烁,因为在后台进行了昂贵的重绘。

我尝试通过检查(在 scrollViewDidEndZooming 中)缩放是否实际发生变化来解决此问题,并且仅在发生变化时才刷新内容。

然而,这引起了一个新问题:如果用户(例如)从 100% 开始,并且在一个手势中 捏到 400%,然后再回到 100%,则内容会有些模糊。这是因为我的优化将缩放视为“没有改变”,因为它以 100% 开始和结束。但实际上,视图是按比例放大和缩小的,这会导致模糊。

通常,当视图通过这些过渡缩放时,我会简单地设置一个标志或其他东西,但 UIScrollView 似乎没有提供任何此类挂钩 - 仅用于开始和结束滚动的挂钩。

除了滚动我自己的手势识别器并放弃 UIScrollview 中的手势识别器之外,有没有办法完成我想要做的事情,这似乎有点矫枉过正?

编辑: 我很惊讶其他人没有遇到这个问题(或者至少没有回应他们如何处理它)。似乎任何具有相对昂贵重绘的应用程序都会遇到我的“之前”行为或“之后”行为,这对于昂贵的重绘情况都不是理想的。想法?

【问题讨论】:

【参考方案1】:

禁用 UIScrollView 弹跳对您的问题有帮助吗?或者这种行为会影响您的应用吗?

【讨论】:

弹跳已被禁用,每个应用程序设计。感谢您的建议。

以上是关于防止在 UIScrollView 的最大/最小缩放时重绘屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UIScrollView 捕捉缩放?

更改 UIScrollView 中的比例因子

UIScrollView 的最大缩放比例

计算 uiscrollview 的最小缩放比例

自定义视图在缩放后重绘时如何防止“反弹”效果?

UIScrollView 并取消缩放捏合手势