Получение полного скриншота UIScrollView в iOS 13 - PullRequest
0 голосов
/ 20 марта 2020

Я использую Swift 5 и iOS 13 . Я пытаюсь сделать скриншот всего изображения с прокруткой и распечатать его, но нижняя часть отображается белым цветом. Как я могу решить эту проблему? Я показал и объяснил все на картинке ниже.

Я также проверен этот топи c

enter image description here

Мой код расширения такой:

extension UIScrollView {

    func screenshot() -> UIImage {

        let savedContentOffset = contentOffset
        let savedFrame = frame

        UIGraphicsBeginImageContextWithOptions(contentSize, false, 0)

        contentOffset = .zero
        frame = CGRect(x: 0, y: 0, width: contentSize.width, height: contentSize.height)
        layer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        contentOffset = savedContentOffset
        frame = savedFrame

        return image ?? UIImage()

    }

}

1 Ответ

0 голосов
/ 21 марта 2020

Это похоже на iOS 13 ошибку, но я нашел решение в этом ответе.

Решение в том, что я удаляю scrollview из суперпредставления , а затем добавляю старые ограничения после создания снимка экрана . Да, это глупо, но это так работает: (

scrollView.removeFromSuperview()
let print = scrollView.screenshot()
mainView.addSubview(scrollView)
scrollView.snp.makeConstraints { (make) in
    make.top.equalTo(topView.snp.bottom)
    make.left.bottom.right.equalToSuperview()
}
...