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

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

UIGraphicsEndImageContext();

¿Cómo puedo tomar una captura de pantalla de sólo una parte de la pantalla, y no todos de la misma, como lo hago yo aquí?

InformationsquelleAutor tdh | 2015-01-16

4 Comentarios

  1. 33

    Por ejemplo, si usted quiere tomar la captura de pantalla de la UIView rectángulo en la posición (50,50) con la altura de (100,150).

    Primer set en el Contexto de la Imagen para el tamaño del rectángulo. Esto establece el tamaño de la imagen.

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

    Ahora dibuje la vista en este contexto, de tal manera que, el parte visible de la pantalla de comienza a (50,50)

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

    Esta clips de la captura de pantalla en (100,150) porque nos permite ajustar el tamaño de nuestra context. Ahora toma el UIImage de este.

    var image:UIImage = UIGraphicsGetImageFromCurrentImageContext();
    • Gracias por la rápida respuesta!
    • mama nuvvu keka mama 😉
    • No funciona para mí. ¿Te importaría echar un vistazo a mi código? stackoverflow.com/questions/34887164/…
    • para swift 5 uso CGRect en lugar de CGRectmake es decir .. CGRect(x: -50,y: -50,ancho: ver.límites.tamaño.anchura,altura: ver.límites.tamaño.altura)
    • Puede alguien por favor responder por qué se multiplica el origen por -1 para x e y? No debería ser solo eje y?
    • Puede usted explicar por qué la negación es necesario?

  2. 0

    Creo que esta es la mejor Respuesta para tomar una foto de la 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()
    }
  3. 0

    para tomar una instantánea de la selección por área de otro UIView

    //viewObject: UIView linked from storyboard
    var bounds= CGRect(x: -viewObject.frame.minX,y: -viewObject.frame.minY,width: view.bounds.size.width,height: view.bounds.size.height)
    
    UIGraphicsBeginImageContext(viewObject.frame.size)
            view.drawHierarchy(in: bounds, afterScreenUpdates: true)
            let outputImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
            UIGraphicsEndImageContext()
    • Puede usted explicar por qué la negación es necesario?

Dejar respuesta

Please enter your comment!
Please enter your name here