NSView dataWithPDF inside rect 但有背景视图

NSView dataWithPDF inside rect but with background view

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

我该如何解决?

谢谢

亚瑟

我得到了答案:

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()

您可以将支持 layer.backgroundColor 的视图转换为图像。然后将图像分配给位于视图层次结构的第 0 个索引中的背景图像视图,并使用方法 dataWithPDF -> 这将成功捕获背景。