gpt4 book ai didi

ios - 自动更改 CALayers 的绘制顺序...可能吗?

转载 作者:行者123 更新时间:2023-12-01 19:28:53 25 4
gpt4 key购买 nike

我有一个 iPad 应用程序,它可以绘制类似描图纸的东西:一个半透明的表面,一侧有标记。在应用程序中,用户可以“折叠”纸张以对齐标记。

最初的原型(prototype)只是自定义 View 中的 drawRect 覆盖,使用低级 CGxxx 调用来进行绘图,我只是手动处理绘图顺序:对于“右侧向上”部分,我首先绘制纸张,然后绘制标记最重要的是,对于折叠的部分,我先画标记,然后在上面画半透明的“纸”。这很好用,但水平很低。我想更好地利用 iOS。

由于 Core Animation 具有 3D 变换,我希望 3D 旋转(翻转纸张)也会自动更改 CALayers 的绘制顺序(纸张是半透明图层,标记是子图层。唉,这不会发生。 ..动画之后,绘制顺序与之前相同。

问题:

1)有没有办法像我希望的那样自动处理绘图顺序?我怀疑答案是否定的,但想问问比我了解更多的人。

2)什么技术适合这种绘图?核心动画? CG图层?只是坚持熟悉的低级调用?我有点不知所措。

仅供引用,绘制折叠纸涉及大量转换和剪裁。过程是:剪辑到底部,画纸(图像)然后标记(路径),然后剪辑到顶部,对折线进行反射变换,然后画标记然后画纸。同样,它运行良好,但代码量很大(如果简单的话)。有更好的方法吗?

感谢您的任何意见,

戴夫·约翰逊

最佳答案

虽然 Core Animation 有 3D 变换,但在合成层方面仍然非常接近 2.5D。您可以做的是修改层 z 顺序(zPositionCALayer 属性),以给人一种标记在半透明纸“前面”或“下面”的印象。

为此,您需要在两个单独的 CALayer 上准备纸张和标记。 s,据我了解,你已经有了。但是请注意,子图层将在其父图层之上呈现......因此,您需要将它们设为兄弟图层以使 z 顺序生效,而不是使“标记”图层成为“纸”图层的子图层,例如,通过使它们成为公共(public)父层的子层:

- (invisible) container layer
- marks layer (zPosition 2)
- paper layer (zPosition 1)

现在要在纸张下方显示标记,只需按 z 顺序重新排列它们就足够了。 (为了同时对它们应用转换,您可能需要分配容器层的 sublayerTransform 属性,而不是修改它们各自的 transform 属性。)

关于ios - 自动更改 CALayers 的绘制顺序...可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4541182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com