È possibile ottenere un UIImage da un UIView creato con snapshotViewAfterScreenUpdates
?UIImmagine da un UIView creato con snapshotViewAfterScreenAggiorna:
A UIView tornato da snapshotViewAfterScreenUpdates
osserva benissimo quando aggiunto come una visualizzazione secondaria, ma il seguente produce un'immagine in bianco:
UIView *snapshotView = [someView snapshotViewAfterScreenUpdates:YES];
UIImage *snapshotImage = [self imageFromView:snapshotView];
- (UIImage *)imageFromView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
// [view.layer renderInContext:UIGraphicsGetCurrentContext()]; // <- same result...
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
Naturalmente è possibile ottenere l'immagine senza fare affidamento su snapshotViewAfterScreenUpdates
:
UIImage *snapshotImage = [self imageFromView:someView];
Sfortunatamente, quando si acquisisce una vista complessa, drawViewHierarchyInRect
non può corrispondere alla velocità di snapshotViewAfterScreenUpdates
. Speravo che sarebbe stato più veloce ottenere il UIImage
da una vista creata da snapshotViewAfterScreenUpdates
, è possibile?
Penso che la ragione per cui questo non funzioni è che la vista restituita dallo snapshot NON è in realtà una vista completa. Se passi attraverso il debugger, vedrai che il suo tipo è '_UIReplicantView'. Questo mi fa pensare che sia solo una copia ottimizzata dell'altra vista e che non abbia le stesse caratteristiche 'di livello' di un UIView 'completo' ... – MobileVet
Grazie a @MobileVet, è bello sapere. Ancora frustrante che non ci sia modo di ottenere i pixel da una funzionalità che riguarda l'acquisizione rapida dello schermo ... – carton
Apple conferma che ciò non è possibile. Vedi: http://www.raywenderlich.com/forums/viewtopic.php?f=37&t=8993&start=10 –