iOS iPhone有可能克隆UIView,并让它自己绘制到两个UIViews?

我正在想办法让一个UIView呈现到另一个UIView以及第一个。 所以我有我的主UIView的界限,和UIView也呈现自己在其他一些UIView。

这可能吗 ? 是否需要广泛的图层操作?

不知道你的真实意图是什么,但这会画两次,用户交互等不会在第二个视图上工作。 此外,这个解决scheme不考虑不同的帧大小。

您要克隆的视图的标题

@interface SrcView : UIView @property(nonatomic, readonly, strong) UIView *cloneView; @end @interface CloneView : UIView @property(nonatomic, weak) UIView *srcView; - (id)initWithView:(UIView *)src; @end 

实现你想克隆的View

 #import "SrcView.h" #import "CloneView.h" @implementation SrcView @synthesize cloneView; - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{ [cloneView setNeedsDisplay]; } - (UIView *)cloneView { if (!cloneView) { cloneView = [[CloneView alloc] initWithView:self]; } return cloneView; } @end @implementation CloneView @synthesize srcView; - (id)initWithView:(UIView *)src { self = [super initWithFrame:src.frame]; if (self) { srcView = src; } return self; } - (void)drawRect:(CGRect)rect { [srcView.layer renderInContext:UIGraphicsGetCurrentContext()]; } @end 

现在你可以调用cloneView并把它添加到你想要的地方。

这似乎是一个经常问StackOverflow的问题。 例如:

iphone,ipad重复的UIView – 克隆的视图

将一个UIView的绘制内容复制到另一个

UIView重复

复制,复制或复制UIView

但如果是我这样做,我的第一种方法是获得我想要复制的UIView句柄,然后recursion迭代它的所有subviews ,然后复制并将它们作为子视图添加到UIView我想复制主UIView进入。

我无法想象有太多的层操作正在进行,但是您可能需要弄清楚如何以编程方式重新build立网点和/或操作。

没有简单的方法克隆一个视图,然后通过一行代码更新两个视图。 因为他们的基础CALayers是不同的。 但是对于复制一个UIView,这里是一个你可以使用的新方法:使用UIView的方法:

 - (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates 

这是绘制视图的最快方法。 在iOS 7中可用。

创build你想“克隆”的UIView的另一个实例,并将其作为子视图添加到另一个视图。 你真的不克隆一个UIView 对象 ,你只需创build它的另一个实例。