NSCoding 和恢复视图

NSCoding and restoring views

我刚刚使用 -(instancetype)initWithCoder:(NSCoder *)aDecoder. 恢复了一些 UIImageView 对象,但是我尝试将它们添加回我的视图中,但我什么也没看到。使用 NSCoding 保存时,UIImageView 是否会丢失分配给它的框架和图像?

UIImageView 符合 NSCodingUIView 也是如此,所以在您的 UIImageView、它的子视图和它们的属性之间,除了实际 UIImage.

您需要像这样单独编码:

[encoder encodeObject:UIImagePNGRepresentation(self.image) forKey:@"image"];

然后像这样检索它:

self.image = [UIImage imageWithData:[decoder decodeObjectForKey:@"image"]];

然后将其设置为您的图像视图。

编辑 Post OP 评论:

框架基于父坐标系,在添加视图之前没有父坐标系。如果你有一个子类,你可以覆盖编码方法并自己存储框架,尽管它可能最终不会基于父视图处于正确的位置。