gpt4 book ai didi

swift - 如何截图 Mac OS 的 NSView?

转载 作者:行者123 更新时间:2023-11-28 06:05:54 26 4
gpt4 key购买 nike

我目前有一个功能可以在 Mac 应用程序中创建整个窗口的屏幕截图。但是,我想针对特定的 View 。我知道在 iOS 中您可以执行以下操作:

extension WKWebView {

var screenshot: UIImage {
if #available(iOS 10.0, *) {
return UIGraphicsImageRenderer(size: bounds.size).image { _ in
drawHierarchy(in: CGRect(origin: .zero, size: bounds.size), afterScreenUpdates: true)
}
} else {
UIGraphicsBeginImageContext(bounds.size)
drawHierarchy(in: bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()!
return image
}
}
}

我如何使用 AppKit 而不是 UIKit 将其转换为 Mac OS。以下是我当前计算的整个窗口截图的属性。

extension WKWebView {

var screenshot: NSImage {
let displayID = CGWindowID() // cgmaindisplayid
let imageRef = CGDisplayCreateImage(displayID)
return NSImage(cgImage: imageRef!, size: (NSScreen.main?.frame.size)!)
}
}

最佳答案

您可以使用 NSView 方法 func dataWithPDF(inside rect: NSRect) -> Data

extension NSView {
var image: NSImage? {
return NSImage(data: dataWithPDF(inside: bounds))
}
}

关于swift - 如何截图 Mac OS 的 NSView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48236902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com