Вопрос

Когда я пытаюсь сделать снимок экрана в spritekit.Я перепробовал все методы, которые смог найти в Интернете.Они не работают.

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

просто не работает

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

не могу распознать себя.границы и масштаб.

Это было полезно?

Решение

Я не уверен, стоит ли -drawViewHierarchyInRect:afterScreenUpdates: предполагается, что он работает с SKView (я предполагаю, что это так), но причина, по которой второй пример не компилируется, заключается в том, что (1) вы пытаетесь вызвать его и bounds вкл . self (предположительно, UIViewController), а не self.view и (2) вы не определили значение scale.Просто измените эти две строки:

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

Кроме того, второй параметр для UIGraphicsBeginImageContextWithOptions—“непрозрачный” — не должно быть “НЕТ”, если только ваше представление не прозрачно, и установка "afterScreenUpdates" в "ДА" необходима только в некоторых обстоятельствах, которые, вероятно, не включают это.Изменив их, вы можете повысить производительность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top