Como agarrar um screenshot no sprite kit?
-
20-12-2019 - |
Pergunta
Quando eu estou tentando pegar uma captura de tela em spritekit.Eu tentei todos os métodos que se pode encontrar online.Eles não estão trabalhando.
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *gameOverScreenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
só trabalho
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, scale);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
não posso reconhecer auto.limites e escala.
Solução
Eu não tenho certeza se -drawViewHierarchyInRect:afterScreenUpdates:
é suposto para trabalhar com SKView (eu assumo isso), mas a razão que o segundo exemplo não compilar é que (1) você está tentando chamá-lo e bounds
no self
(presumivelmente uma UIViewController), ao invés de incluir self.view
e (2) você ainda não definiu o valor de scale
.Basta alterar as duas linhas:
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
Também, o segundo parâmetro UIGraphicsBeginImageContextWithOptions
—"opaco"—não deveria ser NÃO menos que a sua visão é transparente, e definir "afterScreenUpdates" para SIM, só é necessário em algumas circunstâncias, o que provavelmente não incluir este.Você pode ver melhor o desempenho alterando os.