将位图表示从一个视图复制到另一个视图的简单有效方法?

时间:2010-03-11 12:57:14

标签: iphone cocoa-touch

我有一个ViewA和一个ViewB。它们是具有大量子视图的简单UIView对象。我只需要位图表示或者让anViewA的“图像”复制到anViewB,这样anViewB就像anViewA(没有像aViewA这样的子视图)。

首先我尝试使用-copy消息,但遗憾的是UIView不符合NSCopying协议。

还有另一种技巧来制作视图的“可视化副本”吗?

2 个答案:

答案 0 :(得分:4)

非常简单,但有一些限制(参见renderInContext说明)

#import <QuartzCore/CALayer.h>

...

UIGraphicsBeginImageContext(anViewA.frame.size);
[anViewA.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * anImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
anViewB.image = anImage;

答案 1 :(得分:1)

您需要将A的每个子视图的CGLayer绘制到视图B的单个CGLayer中。

从A的CGLayer开始,将其绘制到B,然后沿着视图层次结构重复绘制,直到您将所有内容绘制到B的CGLayer中。你最终会得到一张B的照片。