具有动画内容的 CATiledLayer

发布于 2024-11-04 06:31:33 字数 306 浏览 4 评论 0原文

我有这个由 CATiledLayer 支持的 UIView。目前,我的设置工作得相当顺利,但当我想在这个 CATiledLayer 上为某些视图对象设置动画时,恐怖就开始了。

我读过,我可以使用 setNeedsDisplay 强制 CATiledLayer 重绘自身。但这实际上会重绘屏幕上的所有内容。所以所有的图块都会重新加载。

当有动画发生时,我应该如何更新我的图层?让我们以以下为例:我的图层上有 6 个绿色矩形,当我按下 UIButton 时,我想将 4 号矩形的颜色更改为红色,并将矩形 1、2 和 3 重新定位在贝塞尔曲线上。

I've got this UIView which is backed by a CATiledLayer. My setup works pretty smooth at the moment but the horror starts when I want to animate certain view objects on this CATiledLayer.

I've read that I can force the CATiledLayer to redraw itself by using setNeedsDisplay. But this actually redraws everything on the screen. So all the tiles are loaded all over again.

How should I update my layer when something is animating? Let's take the following as an example: I've got 6 green rectangles on my layer and when I press a UIButton I'd like to change the color of rectangle number 4 to red and reposition rectangle 1 2 and 3 on a bezier curve.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

め七分饶幸 2024-11-11 06:31:35

您可以使用 CATiledView:setNeedsDisplayInRect: 只绘制图层的一部分。

在你的情况下,你应该:

  1. 用新颜色重绘 4
  2. 重绘 1、2 和 3 的旧位置,没有矩形
  3. 重绘 1、2 和 3 上的新位置

you can use CATiledView:setNeedsDisplayInRect: to radraw only portions of the layer.

in your case you should:

  1. redraw 4 with new color
  2. redraw old positions of 1, 2 and 3 with no rectangles
  3. redraw new positions on 1, 2 and 3
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文