不在视图层次中的UIView的渲染层

不在视图层次中的UIView的渲染层,uiview,core-graphics,calayer,Uiview,Core Graphics,Calayer,我想要实现的是拍摄未添加为子视图的UIView的图像,显示并处理图像,然后将视图添加到视图层次结构中 我已经搜索和尝试了一段时间,我相信这是不可能的 显然,问题是,如果没有将视图添加为子视图,那么该视图就没有被绘制(我猜称为drawRect:)。 实际上,我以为renderInContext:会自己调用drawRect/layer 在将其绘制到imageContext之前将其添加为子视图是不够的,因为它不会立即渲染 我使用renderInContext:和视图层截图,请参见此处的代码: [se

我想要实现的是拍摄未添加为子视图的
UIView
的图像,显示并处理图像,然后将视图添加到视图层次结构中

我已经搜索和尝试了一段时间,我相信这是不可能的


显然,问题是,如果没有将视图添加为子视图,那么该视图就没有被绘制(我猜称为
drawRect:
)。 实际上,我以为
renderInContext:
会自己调用
drawRect/layer

在将其绘制到imageContext之前将其添加为子视图是不够的,因为它不会立即渲染

我使用
renderInContext:
和视图层截图,请参见此处的代码:

[self.view addSubView:view];
UIGraphicsBeginImageContextWithOptions(view.frame.size, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextTranslateCTM(context, -frame.origin.x, -frame.origin.y);

[view.layer renderInContext:context];

UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

所以我的问题是,是否有人设法使UIView不可见?如果是,如何将UIView添加到层次结构中,但将其隐藏

- (void)takeScreenSnapshot {

     UIView *capturedView = self.view;    
     UIView *hiddenView = self.hiddeniew;  //  hidden view which is 
                                           //  a part of capturedView   
     hiddenView.hidden = NO;

     BOOL retina = [self isRetinaDisplay];
     UIImage *image = [capturedView captureImageWithScale:(retina) ? 2.f : 1.f];

     hiddenView.hidden = YES;
}
这太尴尬了。
在与一位非常友好的apple开发支持人员进行邮件交谈后,我们查看了我的代码,发现我只是简单地将
hidden
属性设置为
YES
-别那么做

因此,直接制作不在视图层次结构中的视图的屏幕截图是很简单的。

为什么不起作用完全是我的错。

遗憾的是,这不是我想要的。即使它能工作,我以前也不能添加视图。