Я пытаюсь сделать снимок экрана MySecondViewController.view, пока отображается MyFirstViewController. Я не хочу, чтобы MySecondViewController появлялся на экране в любой момент. Возможно ли это?Снимок экрана с изображением без его отображения
Вот мой текущий код внутри функции MyFirstViewController:
func createPreview() {
let mySecondViewController = self.storyboard!.instantiateViewController(withIdentifier: "MySecondViewController")
self.navigationController?.pushViewController(mySecondViewController, animated: false)
let snapshot = mySecondViewController.view.snapshot()
self.navigationController?.popViewController(animated: false)
}
Вот расширение UIView Я использую:
func snapshot() -> UIImage {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
drawHierarchy(in: self.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
С помощью этого кода, переменная snapshot
содержит невидимое изображение с хорошие размеры. Я думаю, что он снимает скриншот после того, как представление вышло из навигационного контроллера.
Если я попытаюсь установить значение afterScreenUpdates
в значение false, результат будет таким же. Затем я думаю, что он берет скриншот, прежде чем представление будет нажато в навигационном контроллере.