macOS: SwiftUI: MenuItem для создания снимка экрана WKWebView и сохранения его в ~ / Pictures с отметкой времени? - PullRequest
1 голос
/ 20 января 2020

Я создаю приложение macOS SwiftUI, которое открывает WKWebView для указанного c URL.

Теперь я пытаюсь сделать MenuItem сопоставленным с функцией, которая делает снимок экрана окна WKWebView. и сохраняет его в ~ / Pictures с отметкой времени.

Я пытался найти это с помощью учебных пособий, но нашел только iOS WKSnapShot материал типа.

Хотя «MenuItem» -> bind to -> First Responder -> @IBAction - это то, с чем я сейчас немного знаком, я не совсем уверен, как вызвать снимок WKWebView и как определить его имя с меткой времени.

    @IBAction func takeSnapshot(with snapshotConfiguration: WKSnapshotConfiguration?,
    completionHandler: @escaping (NSImage?, Error?) -> Void)
    {
}

Это начало стрелять в меня ошибки: @IBAction methods must have 1 argument

1 Ответ

0 голосов
/ 20 января 2020

Вам просто нужно вызвать функцию снимка в webView. Чтобы сделать функцию снимка webView доступной, вам нужно сделать ее доступной в AppDelegate.swift

Затем вы можете сохранить ее, используя saveImage - , которая связана с удобной функцией на этом ответ .

public let webView: WKWebView = WKWebView()
@IBAction func takeSnapshot(with snapshotConfiguration: WKSnapshotConfiguration,
    completionHandler: @escaping (NSImage *snapshotImage) -> Void)
    {
        self.webView.takeSnapshot(with: snapshotConfiguration) { image, error in
        let formatter = DateFormatter()
                    formatter.dateFormat = "yyyy_MM_dd_hh_mm_ss"
        name = (formatter.string(from: Date()) as NSString) as String
            if let image = image {
                saveImage(name, image)
                }
            }
        }
...