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.

È stato utile?

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 UIGraphicsBeginImageContextWithOptionsTagCode- "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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top