2015-01-14 9 views
5

È possibile acquisire uno screenshot di una vista che include un CAEmitterLayer?Schermata con CAEmitterLayer

Ogni volta che provo, la vista è creato bene, ma tutte le particelle sono mancanti, ecco il mio codice:

UIGraphicsBeginImageContext(drawingView.frame.size) 
var context:CGContextRef = UIGraphicsGetCurrentContext() 
drawingView.layer.renderInContext(context) 
let image = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 
return image 

mi hanno confermato che il CAEmitterLayer è sul drawingView.layer

+0

Infine, ho qualcosa utilizzando: drawViewHierarchyInRect, questo post parla di CAEmitterLayer non essere in grado di trarre in fase di rendering InContext http://stackoverflow.com/questions/11926690/caemitterlayer-not-rendering-when-renderincontext-of-superlayer-is-called – Chris

risposta

1

Questo funziona per iOS, ma ora ho bisogno di un metodo simile per OSX:

func offscreenScreenshot(drawingView:UIView) -> Image 
{ 
    UIGraphicsBeginImageContextWithOptions(drawingView.frame.size, true, 1.0) 
    let res = drawingView.drawViewHierarchyInRect(drawingView.bounds, afterScreenUpdates: false) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return image 
} 
+0

Ciao Chris, ho provato il codice ma sono di fronte a problemi con la qualità dell'immagine e con i dati di snapshot mancanti , Potrebbe suggerire per la soluzione ..? –

+0

È un problema di scala? in tal caso, impostare da 1.0 a 0 per il parametro di scala. – Chris

+0

e mancano i dati dell'istantanea a causa di afterScreenUpdates: false.if ho impostato afterScreenUpdates: true UIView era lampeggiante e quindi aggiornato –

Problemi correlati