Плохое качество изображения при захвате UIView с классом UIGraphicsImageRenderer - PullRequest
0 голосов
/ 04 июня 2018

В настоящее время я использую этот очень популярный подход, чтобы захватить представление , чтобы пользователь мог поделиться им или сохранить его в своей фотогалерее:

let renderer = UIGraphicsImageRenderer(size: CGSize(width: self.viewToCapture.bounds.size.width, height: self.viewToCapture.bounds.size.height))

let image = renderer.image { ctx in
        self.viewToCapture.drawHierarchy(in: self.viewToCapture.bounds, afterScreenUpdates: true)
}

Но дело в том,что результат этого очень неудовлетворителен, потому что разрешение изображения не очень хорошее. До сих пор я не нашел другого способа сделать это.Рендерер не имеет какого-либо свойства (или, по крайней мере, я не знаю ни одного), которое могло бы регулировать качество визуализируемых изображений.

Итак, я ищу либо модификацию в соответствии с показанным способомвыше или, может быть, другой способ получить представление и получить в результате идеально четкое изображение.Был бы рад, если бы вы могли поделиться своими знаниями об этой проблеме.Заранее спасибо.

1 Ответ

0 голосов
/ 04 июня 2018

Я использую это расширение для создания изображения из представления. UIGraphicsGetCurrentContext () возвращает ссылку на текущий графический контекст.Это не создает один.Это важно запомнить, потому что, если вы посмотрите на него в таком свете, вы увидите, что ему не нужен параметр размера, потому что текущий контекст - это просто размер, с которым был создан графический контекст.

  extension UIView {
        func toImage() -> UIImage? {
            UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)

            drawHierarchy(in: self.bounds, afterScreenUpdates: true)

            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()

            return image
        }
    }
...