我有一个正在实施撤消/重做的手指绘画视图。所有的绘图都发生在一个名为 lineLayer 的 CGLayer 上。
一旦用户触摸屏幕但在对屏幕进行任何修改之前,我需要快速抓取视图内容并创建一个撤消级别。
显然将视图保存到磁盘不是一种选择,因为它需要太长时间。我想象的解决方案是将 CGLayer 复制到字典中,使用如下所示:
// I copy the layer as a NSValue
NSValue *layerCopy = [NSValue valueWithBytes:&myLayer objCType:@encode(CGLayerRef)];
我把它存储在字典上
NSString *aKey = [NSString stringWithFormat:@"%d", [number intValue]];
[self.dictUNDO setObject:layerCopy forKey:aKey];
后来我检索它使用
NSString *myKey = [NSString stringWithFormat:@"%d", [number intValue]];
NSValue *myCopy = [self.dictUNDO objectForKey:myKey];
[myCopy getValue:&lineLayer];
//lineLayer is the CGLayer where the drawing happens
问题是 lineLayer 根本没有被这个读取操作改变。它继续具有与以前相同的内容。
我错过了什么吗?
谢谢。