我使用的块的CALayer的子类,我试图找到保存状态或持续,当前创建的层最好的方式描绘了一个简单的iPhone应用程序。
我试着用布拉德·拉尔森的答案从这个先前的问题上存储在NSUserDefaults的,这工作了坚持我的CALayer的子类自定义对象,而不是它就像几何学和背景颜色基本状态,所以他们就在那里,但上重新启动并没有呈现。
我做了我的声明实例变量遵循NSCoding协议,但不知道怎么做的CALayer的属性做同样不需重新宣布所有它的属性。 或者,这是不正确的/最好的办法完全?
下面是我使用的归档层的数组的代码:
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:viewController.view.layer.sublayers] forKey:@"savedArray"];
这里是我使用重新加载我在各层的-viewDidLoad代码:
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:@"savedArray"];
if (dataRepresentingSavedArray != nil) {
[self restoreStateWithData:dataRepresentingSavedArray];
而在-restoreStateWithData:
NSArray *savedLayers = [NSKeyedUnarchiver unarchiveObjectWithData:data];
if (savedLayers != nil) {
for(layer in savedLayers) {
[self.view.layer addSublayer:layer];
}
[spaceView.layer layoutSublayers];
}