不在视图层次中的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
-别那么做
因此,直接制作不在视图层次结构中的视图的屏幕截图是很简单的。为什么不起作用完全是我的错。遗憾的是,这不是我想要的。即使它能工作,我以前也不能添加视图。