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 -> 这将成功捕获背景。
我不想截取 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 -> 这将成功捕获背景。