Как сделать полный снимок UITextView - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь сделать снимок UITextView, используя приведенный ниже код

extension UIView {

    func pb_takeSnapshot() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
        drawHierarchy(in: self.frame, afterScreenUpdates: true)
        let image = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return image
    }
}

Но я даю мне половину снимка.Даже UITextView и Snapshot изображение имеет те же width и height, когда я проверяю, используя print.Я также пробовал разные коды, но не работал.Может кто-нибудь сказать мне, как я могу это исправить, я хочу полный снимок UITextView.

Это мой UITextView С Frame (0.0, 97.0, 414.0, 234.0) enter image description here

И это снимок с использованием pb_takeSnapshot() С Frame ширина = 414,0, высота = 234,0 enter image description here.

1 Ответ

0 голосов
/ 25 сентября 2018

Вы не должны использовать frame для рисования (и по какой-то причине, как вы сказали в комментариях), ваши bounds не дают правильное значение.

Это было бытрудно объяснить причину этого, не глядя на иерархию представлений, однако вы все равно сможете создать правильный снимок.

Вместо этого создайте прямоугольник для рисования с нуля:

let rect = CGRect(x: 0.0, y: 0.0, width: bounds.size.width, height: bounds.size.height)
drawHierarchy(in: rect, afterScreenUpdates: true)
...