我有一个ViewA和一个ViewB。它们是具有大量子视图的简单UIView对象。我只需要位图表示或者让anViewA的“图像”复制到anViewB,这样anViewB就像anViewA(没有像aViewA这样的子视图)。
首先我尝试使用-copy消息,但遗憾的是UIView不符合NSCopying协议。
还有另一种技巧来制作视图的“可视化副本”吗?
答案 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的照片。