Возможен внеэкранный wkwebview с методами делегата вне контроллера представления для моментального снимка? - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь загрузить образ .svg. Обычно для изображения .png я просто делаю что-то вроде:

let task = session.dataTask(with: url) { data, response, error in
            if let data = data, error == nil {
                if let img = UIImage(data: data as Data) {
                self.cachedImages[surl] = img
                completion(img)
            }
        }
        }
        task.resume()

Однако это не работает для меня для файла .svg, и поэтому у меня возникла идея сначала загрузить файл .svg в wkwebview, который никогда не отображается на экране, и моментальный снимок его для создания файла .png, с которым я могу работать. Перед созданием моментального снимка придется подождать, пока содержимое полностью загрузится, что обычно обрабатывается методом делегата didFinishNavigation wkwebview. делегировать протокол. Если кто-то хочет сделать снимок экрана, можно использовать метод делегата didFinishNavigation.

func webView(_ webView: WKWebView,
            didFinish navigation: WKNavigation!)
{
    var snapshotConfiguration = WKSnapshotConfiguration()
    snapshotConfiguration.snapshotWidth = 1440

    webView.takeSnapshot(with: snapshotConfiguration) { (image, error) in
        guard let image = image,
            error == nil else {
            return
        }
    }
}

В этом конкретном случае использования wkwebview в контроллере просмотра нет места - и эта обработка изображения выполнена в классе коммунальных услуг. Можно ли использовать этот метод делегирования без использования контроллера представления?

В качестве альтернативы, есть ли другой способ загрузить файл .svg?

Спасибо за любые предложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...