Sólo parte de la pantalla de la pantalla – Swift

Estoy usando este código Swift para tomar una captura de pantalla de mi aplicación:

UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0); self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

¿Cómo voy a hacer una captura de pantalla de una parte de la pantalla, y no todo, como lo hago aquí?

Por ejemplo, si desea tomar la captura de pantalla del rectángulo UIView en la position (50,50) con la altura de (100,150) .

Primero configure el context de la image para el tamaño del rectángulo. Esto establece el tamaño de la image.

 UIGraphicsBeginImageContextWithOptions(CGSizeMake(100,150), false, 0); 

Ahora dibuje la vista en este context de tal manera que, la parte visible de la captura de pantalla comience en (50,50)

 self.view.drawViewHierarchyInRect(CGRectMake(-50,-50,view.bounds.size.width,view.bounds.size.height) afterScreenUpdates: true) 

Esto (100,150) la captura de pantalla en (100,150) porque establecemos el tamaño de nuestro context . Ahora toma el UIImage de esto.

 var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); 

Para capturar una vista que contiene un UIVisualEffect (Blur / Vibrancy), vea mi solución aquí: https://stackoverflow.com/a/33633386/802196

Creo que esta es la mejor respuesta para tomar una foto de una parte de la pantalla:

 func screenShot() { UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.frame.size.width*0.99,self.frame.size.height*0.70), false, 0) var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); self.view?.drawViewHierarchyInRect(CGRectMake(-01, -01, self.frame.size.width, self.frame.size.height), afterScreenUpdates: true) var screenShot = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() }