Guest User

Untitled

a guest
Oct 23rd, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. extension UIView {
  2.  
  3. func takeScreenshot(canvasFrame: CGRect) -> UIImage? {
  4.  
  5. // Begin context
  6. UIGraphicsBeginImageContextWithOptions(self.frame.size, isOpaque, UIScreen.main.scale)
  7.  
  8. // Draw view in that context
  9. drawHierarchy(in: self.bounds, afterScreenUpdates: true)
  10.  
  11. // And finally, get image
  12. let image = UIGraphicsGetImageFromCurrentImageContext()
  13. UIGraphicsEndImageContext()
  14.  
  15. if let wholeImage = image {
  16. let scale = wholeImage.scale
  17. let scaledRect = CGRect(x: canvasFrame.origin.x * scale,
  18. y: canvasFrame.origin.y * scale,
  19. width: canvasFrame.size.width * scale,
  20. height: canvasFrame.size.height * scale
  21. )
  22. guard let cgImage = wholeImage.cgImage?.cropping(to: scaledRect) else { return nil }
  23. return UIImage(cgImage: cgImage, scale: UIScreen.main.scale, orientation: .up)
  24. }
  25. return nil
  26. }
  27. }
Add Comment
Please, Sign In to add comment