NSView dataWithPDF在rect内,但有背景视图

时间:2016-12-14 23:17:57

标签: swift cocoa swift3 nsview

我不想截取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视图的背景颜色,也没有透明背景的图像。

我该如何解决这个问题?

谢谢

阿图尔

2 个答案:

答案 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 - >这将成功捕获背景。