Как сделать скриншот в sprite kit?
-
20-12-2019 - |
Вопрос
Когда я пытаюсь сделать снимок экрана в 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" в "ДА" необходима только в некоторых обстоятельствах, которые, вероятно, не включают это.Изменив их, вы можете повысить производительность.