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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top