iOS的iPhone是可以复制的UIView,并将它本身吸取两个UIViews?(iOS iPhon

2019-06-24 01:27发布

我想了一个办法,有一个UIView表现自己到另一个UIView的以及第一个。 所以,我有我与它的边界主要的UIView,和UIView的也使得自己在其他一些UIView的。

这可能吗 ? 是否需要大量的层操作?

Answer 1:

不知道什么是你真正的意图是,但是这将绘制视图的两倍,用户交互等,不会对第二视图中工作。 另外这个解决方案并不需要不同的帧大小的照顾。

要克隆视图的头

@interface SrcView : UIView
@property(nonatomic, readonly, strong) UIView *cloneView;
@end

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

实施要克隆的视图

#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并添加它的地方你想要的。



Answer 2:

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

iphone,ipad的重复的UIView -克隆查看

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

UIView的复制

复制,克隆或复制的UIView

但是,如果是我这样做,我的第一个办法是得到一个句柄UIView我要复制,然后递归遍历所有的subviews中,然后复制和其添加为子视图到UIView我想要复制的主UIView的进入。

我无法想象有太多的层操作这个事,但你可能会需要弄清楚如何以编程方式重新建立网点和/或行动。



Answer 3:

有没有简单的方法来克隆一个视图,然后通过一行代码更新两个视图。 由于其内在的CALayers是不同的。 但对于复制一个UIView,这里是你可以用一种新的方法:使用的UIView的方法:

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates

这是画一个图的最快方式。 可在iOS的7。



Answer 4:

创建“克隆”了UIView的另一个实例您希望并将其添加为一个子视图到其他视图。 你不是真的克隆一个UIView 对象 ,只需创建它的另一个实例。



文章来源: iOS iPhone is it possible to clone UIView and have it draw itself to two UIViews?