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



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

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

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

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

通常,当视图经过这些过渡缩放时,我只会设置一个标志或其他东西,但 UIScrollView 似乎不提供任何这样的钩子 - 只有一个用于开始和结束滚动的钩子。

有没有办法完成我正在尝试做的事情,而不是滚动我自己的手势识别器并放弃 UIScrollview 中的手势识别器,这似乎有点矫枉过正?

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

禁用 UIScrollView 弹跳是否有助于解决您的问题?或者此行为会影响你的应用吗?

最新更新