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它的另一个实例。