Come afferrare uno screenshot nel kit Sprite?
-
20-12-2019 - |
Domanda
Quando sto cercando di afferrare uno schermo a Spritekit.Ho provato tutti i metodi che riesco a trovare online.Non stanno funzionando.
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *gameOverScreenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
.
Non funziona
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
.
non può riconoscere sé e scala.
Soluzione
Non sono sicuro che -drawViewHierarchyInRect:afterScreenUpdates:
sia dovuto lavorare con Skview (presumo), ma il motivo per cui il secondo esempio non è compilato è quello (1) che stai cercando di chiamarlo e bounds
su self
(presumibilmenteUn UIViewController) anziché self.view
e (2) non hai definito il valore di scale
.Basta cambiare queste due linee:
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
.
Inoltre, il secondo parametro a UIGraphicsBeginImageContextWithOptions
TagCode- "opaco" non dovrebbe essere n. A meno che la vostra vista non sia trasparente e impostare "Afterscreenupdates" su SÌ è necessario solo in alcune circostanze che probabilmente non includono questo.Puoi vedere prestazioni migliori cambiando quelle.