Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extension UIView {
- func takeScreenshot(canvasFrame: CGRect) -> UIImage? {
- // Begin context
- UIGraphicsBeginImageContextWithOptions(self.frame.size, isOpaque, UIScreen.main.scale)
- // Draw view in that context
- drawHierarchy(in: self.bounds, afterScreenUpdates: true)
- // And finally, get image
- let image = UIGraphicsGetImageFromCurrentImageContext()
- UIGraphicsEndImageContext()
- if let wholeImage = image {
- let scale = wholeImage.scale
- let scaledRect = CGRect(x: canvasFrame.origin.x * scale,
- y: canvasFrame.origin.y * scale,
- width: canvasFrame.size.width * scale,
- height: canvasFrame.size.height * scale
- )
- guard let cgImage = wholeImage.cgImage?.cropping(to: scaledRect) else { return nil }
- return UIImage(cgImage: cgImage, scale: UIScreen.main.scale, orientation: .up)
- }
- return nil
- }
- }
Add Comment
Please, Sign In to add comment