gpt4 book ai didi

objective-c - 如何复制CGLayer

转载 作者:行者123 更新时间:2023-12-03 17:52:22 25 4
gpt4 key购买 nike

我想保存 CGLayer 以便将其传递给撤消管理器。然而,当用户想要撤消时,图层已经发生了变化!所以我需要创建 CGLayer 的副本并将地址存储在指针中。大致如下:

 CGLayerRef self.myLayer;

...//stuff happens and self.myLayer gets its value

CGlayerRef layerCopy = CGLayerCreateCopy(self.myLayer);

当然,CGLayerCreateCopy不存在,那我该怎么办?

最佳答案

您能否告诉我们更多有关您的设计的信息,为什么您认为需要在撤消堆栈中存储一层?从概念上讲,层位于“模型- View - Controller ”的“ View ”位置。撤消堆栈实际上应该只包含模型数据,并在需要时将其应用于 View 。因此,这听起来像是您应该重新考虑设计中的某些内容。

例如如果图层包含图像,则从其内容属性中获取 CGImage 并将其存储在撤消堆栈中。不是图层本身。

编辑:抱歉,我混淆了 CGLayer 和 CALayer。但一般方法仍然是:不要保留该层。从图层的内容创建一个 CGImage(或者更好的是,首先创建一个 CGImage,然后将其绘制到图层中),并将其保留以进行撤消。如果您使用一些更简单的绘图,请使用这些绘图所基于的任何内容。例如。 CGPathRef、NSBezierPath 或模型中的自定义对象,用于定义生成这些绘图的属性。

关于objective-c - 如何复制CGLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22183428/

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