我想将我的NSView
(带图层)作为图像,我可以在OSX中这样做吗?
我将执行以下操作
-(UIImage*) makeImage//snapshot the view
{
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
我从一个SO答案中尝试了这个解决方案
[[NSImage alloc] initWithData:[view dataWithPDFInsideRect:[view bounds]]];
但它没有用,因为我的NSView
中有图层。
我从将UI转换为NS开始 现在我在每一行都有警告:)
-(NSImage*) makeImage :(RMBlurredView*)view
{
UIGraphicsBeginImageContext(view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
NSImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
我不熟悉OSX可以帮助我将此代码转换为OSX吗?
答案 0 :(得分:5)
绘制到图像与iOS不同:
你创建一个空白图像,LOCK到它,所以所有绘图都转到那个图形上下文
NSImage *image = [[NSImage alloc] initWithSize:self.view.bounds.size];
[image lockFocus];
您绘制的图层与iOS上的相同
CGContextRef ctx = [NSGraphicsContext currentContext].graphicsPort;
[self.view.layer renderInContext:ctx];
解锁图片
[image unlockFocus];
请注意,这仅适用于您的视图是否已分层。它不适用于非分层视图!
您的视图 - 如上所示 - 是图层支持,所以一切都很好;)