sách gpt4 ai đã đi

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

In lại 作者:行者123 更新时间:2023-12-01 19:28:53 25 4
mua khóa gpt4 Nike

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

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

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

câu hỏi:

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

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

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

感谢您的任何意见,

戴夫·约翰逊

1 Câu trả lời

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

为此,您需要在两个单独的 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
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com