Comment faire une capture d'écran dans le kit sprite ?
-
20-12-2019 - |
Question
Lorsque j'essaie de prendre une capture d'écran dans spritekit.J'ai essayé toutes les méthodes que je peux trouver en ligne.Ils ne travaillent pas.
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *gameOverScreenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
ça ne marche tout simplement pas
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Je ne peux pas reconnaître mes limites et mon échelle.
La solution
Je ne suis pas sûr si -drawViewHierarchyInRect:afterScreenUpdates:
est censé fonctionner avec SKView (je suppose), mais la raison pour laquelle le deuxième exemple ne se compile pas est que (1) vous essayez de l'appeler et bounds
sur self
(vraisemblablement un UIViewController) plutôt que self.view
et (2) vous n’avez pas défini la valeur de scale
.Changez simplement ces deux lignes :
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
De plus, le deuxième paramètre à UIGraphicsBeginImageContextWithOptions
—« opaque » – ne devrait pas être NON à moins que votre vue soit transparente, et définir « afterScreenUpdates » sur OUI n'est nécessaire que dans certaines circonstances qui n'incluent probablement pas celle-ci.Vous constaterez peut-être de meilleures performances en les modifiant.