你如何创建一个UIImageView实例的副本?
问题描述:
如何创建可独立于第一个实例进行操作的UIImageView实例副本?我试过UIImageView *tempCopy = [instance copy]
但它崩溃了。有另一种方法吗?你如何创建一个UIImageView实例的副本?
答
UIImageView
不符合NSCopying
,但它确实符合NSCoding
。存档您的视图,然后将其解压缩以获得全新副本。
对于懒洋洋地斜,这看起来像:
NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:imageView];
UIImageView *copy = [NSKeyedUnarchiver unarchiveObjectWithData:data];
答
在回答迈克·阿卜杜拉的反应......问题是他需要保存在他的图像视图中已存在的所有子视图.. 。
使用这种方法的问题是NSCoding的默认实现将不保存这些观点......所以他必须要覆盖的方法,并提供深层编码(对这些努力的他更符合NSCopying和执行深拷贝)
如果你需要的是一个静态图像(子视图不提供交互)我建议做以下
UIGraphicsBeginImageContext(imageView.rect.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *copyImageView = [[UIImageView alloc] initWithImage:viewImage];
这将确保星期二子视图得到所有保存为静态图像...
,如果你需要的是有保留它们的相互作用子视图副本...这不会帮助你......
问候
你确定你不想要它代表的UIImage? – 2011-01-07 02:11:31
UIImageView是一系列UIButtons,我可以将它们当作UIImageView的UIImage吗? – John 2011-01-07 02:16:17