如何获取UITextView的完整快照

时间:2018-09-25 11:19:21

标签: ios swift uiview uiimage uitextview

我正在尝试使用以下代码拍摄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进行检查时,即使Snapshotwidth图像也具有相同的heightprint。我也尝试了不同的代码,但是没有用。谁能告诉我如何解决这个问题,我想要UITextView的完整快照。

这是我的UITextViewFrame(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 :(得分:1)

您不应该使用frame来绘制图形(由于某些原因,正如您在评论中所说),您的bounds没有给出正确的值。

如果不查看视图层次结构就很难调试原因,但是您仍然应该能够创建正确的快照。

创建矩形以替代从头开始绘制

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