在重绘屏幕之前,如何阻止 iPhone 显示变换更改

Posted

技术标签:

【中文标题】在重绘屏幕之前,如何阻止 iPhone 显示变换更改【英文标题】:How can I stop the iPhone from displaying a transform change until after the screen is redrawn 【发布时间】:2009-06-11 16:47:05 【问题描述】:

我发现 UIScrollView 的缩放机制很笨拙并且基本上无法使用。所以相反,我自己动手。我有一个 UIView 可以通过捏缩放调整自己的大小,而且效果很好。缩放完成后,视图需要重置其变换并重新绘制图像。

缩放的工作方式与 UIScrollView 基本相同。它设置 UIView 的 transform 属性直到完成。然后,当缩放完成时,我想将transform 重置为CGAffineTransformIdentity,将框架调整为之前的大小,并告诉视图以新的大小重绘自身。

这一切都很好,除了当我将变换更改为身份然后重绘图像时,在图像完全重绘之前有轻微的闪烁。这是因为我使用的是 CATiledLayer 的子类,因为视图可以是任意大小。

我已将fadeDuration 覆盖为零,但在重绘完成之前重置转换时仍有闪烁。有没有什么简单的方法可以在不创建另一个视图来绘制然后替换它的情况下克服这个问题?

【问题讨论】:

Ed,你还有这个问题吗?我发现 UIScrollView 在很大程度上无法使用,除非您将它与 CATiledLayer 结合使用,反之亦然。换句话说,如果您仍然使用 CATiledLayer,请使用 UIScrollView! 我相信我不再有这个问题了,因为我不记得最近见过它;在我的情况下,使用 UIScrollView 肯定存在其他问题,这使得使用常规 UIView 变得更加简单。 【参考方案1】:

使用较低级别的层方法解决了问题。

【讨论】:

以上是关于在重绘屏幕之前,如何阻止 iPhone 显示变换更改的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 子视图在重绘之前不显示

反应:在重定向到 Keycloak IDP 页面之前阻止显示应用程序

opengl 矩阵问题

Next.js:在重定向到 Keycloak 登录页面之前阻止显示索引页面

“onscroll”在重绘之后还是之前触发?

TabView 在重绘时是不是会错过导航点击?