我不想截取NSView
的截图,但是当我这样做时,我会得到一张没有背景的图像。所有子视图都显示,但不是背景。我使用这段代码:
if let image = NSImage(data: background.dataWithPDF(inside: background.bounds)) {
let imageView = NSImageView(image: image)
imageView.imageScaling = .scaleProportionallyUpOrDown
return NSImageView(image: image)
}
我想,好吧,当我只获得子视图时,我会制作一个超视图的截图,我扼杀了以下内容:
if let superview = background.superview, let image = NSImage(data: superview.dataWithPDF(inside: background.frame)) {
let imageView = NSImageView(image: image)
imageView.imageScaling = .scaleProportionallyUpOrDown
return NSImageView(image: image)
}
但我得到了同样的结果。即使我设置了background
视图的背景颜色,也没有透明背景的图像。
我该如何解决这个问题?
谢谢
阿图尔
答案 0 :(得分:0)
我得到了答案:
background.lockFocus()
if let rep = NSBitmapImageRep(focusedViewRect: background.bounds){
let img = NSImage(size: background.bounds.size)
img.addRepresentation(rep)
return NSImageView(image: img)
}
background.unlockFocus()
答案 1 :(得分:0)
您可以将支持layer.backgroundColor的视图转换为图像。然后将图像分配给位于视图层次结构的第0个索引中的背景图像视图,并使用方法dataWithPDF - >这将成功捕获背景。