Frage

Wenn ich versuche, einen Screenshot in Spritekit zu machen.Ich habe alle Methoden ausprobiert, die ich online finden kann.Sie funktionieren nicht.

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *gameOverScreenImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

funktioniert einfach nicht

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

ich kann mich nicht selbst erkennen.grenzen und Maßstab.

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob -drawViewHierarchyInRect:afterScreenUpdates: soll mit SKView funktionieren (nehme ich an), aber der Grund, warum das zweite Beispiel nicht kompiliert wird, ist, dass (1) Sie versuchen, es aufzurufen und bounds auf self (vermutlich ein UIViewController) anstatt self.view und (2) Sie haben den Wert von nicht definiert scale.Ändern Sie einfach diese beiden Zeilen:

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];

Auch der zweite Parameter zu UIGraphicsBeginImageContextWithOptions—"undurchsichtig" - sollte nicht NEIN sein, es sei denn, Ihre Ansicht ist transparent, und das Setzen von "afterScreenUpdates" auf JA ist nur unter bestimmten Umständen erforderlich, die diese wahrscheinlich nicht enthalten.Sie können eine bessere Leistung sehen, indem Sie diese ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top