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

Ale*_*one 14 iphone quartz-graphics uiview ios

我正在考虑让UIView渲染到另一个UIView以及第一个UIView的方法.所以我有我的主UIView它的界限,而UIView也在其他一些UIView中呈现.

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

Jon*_*hon 15

不知道你的真实意图是什么,但这会画两次视图,用户交互等不会对第二个视图起作用.此解决方案也不考虑不同的框架尺寸.

要克隆的视图的标题

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

@interface CloneView : UIView
@property(nonatomic, weak) UIView *srcView;
- (id)initWithView:(UIView *)src;
@end
Run Code Online (Sandbox Code Playgroud)

要实现要克隆的视图

#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
Run Code Online (Sandbox Code Playgroud)

现在你可以调用cloneView并将其添加到你想要的地方.


Mic*_*ann 5

这似乎是StackOverflow上常见的问题.例如:

iphone,ipad复制UIView - 克隆视图

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

UIView重复

复制,克隆或复制UIView

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

我无法想象有太多的层操作正在进行中,但您可能需要弄清楚如何以编程方式重新建立出口和/或操作.

  • 当您将它们添加为子视图时,您实际上是将这些项目移动到另一个父视图下,而不是复制 (2认同)