NSCoding 和恢复视图
NSCoding and restoring views
我刚刚使用 -(instancetype)initWithCoder:(NSCoder *)aDecoder.
恢复了一些 UIImageView 对象,但是我尝试将它们添加回我的视图中,但我什么也没看到。使用 NSCoding 保存时,UIImageView 是否会丢失分配给它的框架和图像?
UIImageView
符合 NSCoding
,UIView
也是如此,所以在您的 UIImageView
、它的子视图和它们的属性之间,除了实际 UIImage
.
您需要像这样单独编码:
[encoder encodeObject:UIImagePNGRepresentation(self.image) forKey:@"image"];
然后像这样检索它:
self.image = [UIImage imageWithData:[decoder decodeObjectForKey:@"image"]];
然后将其设置为您的图像视图。
编辑 Post OP 评论:
框架基于父坐标系,在添加视图之前没有父坐标系。如果你有一个子类,你可以覆盖编码方法并自己存储框架,尽管它可能最终不会基于父视图处于正确的位置。
我刚刚使用 -(instancetype)initWithCoder:(NSCoder *)aDecoder.
恢复了一些 UIImageView 对象,但是我尝试将它们添加回我的视图中,但我什么也没看到。使用 NSCoding 保存时,UIImageView 是否会丢失分配给它的框架和图像?
UIImageView
符合 NSCoding
,UIView
也是如此,所以在您的 UIImageView
、它的子视图和它们的属性之间,除了实际 UIImage
.
您需要像这样单独编码:
[encoder encodeObject:UIImagePNGRepresentation(self.image) forKey:@"image"];
然后像这样检索它:
self.image = [UIImage imageWithData:[decoder decodeObjectForKey:@"image"]];
然后将其设置为您的图像视图。
编辑 Post OP 评论:
框架基于父坐标系,在添加视图之前没有父坐标系。如果你有一个子类,你可以覆盖编码方法并自己存储框架,尽管它可能最终不会基于父视图处于正确的位置。