Подтвердить что ты не робот

_UIReplicantView и snapshotViewAfterScreenУдаляет, как получить свой контент?

-renderInContext: широко используется с момента его появления, но при этом невозможно отобразить слой OpenGL, AVPreviewLayer (возможно, потому что это своего рода слой OpenGL), и я все еще не смог правильно отобразить CATiledLayer.
В iOS7 были введены 2 новых API для получения скриншотов, один из них - -snapshotViewAfterScreenUpdates:, который возвращает определенный вид (_UIReplicantView) и -drawViewHierarchyInRect:afterScreenUpdates:, последний из которых является своего рода заменой для -renderInContext, к сожалению, похоже, ограничения.
-snapshotViewAfterScreenUpdates: он, похоже, работает также с OpenGL и AVPreviewLayer, к сожалению, подобное подобное представление не очень полезно, если вы хотите делать определенные анимации или использовать содержимое в качестве фона чего-то (например, uibutton). Я попытался удалить содержимое из возвращаемого представления, но мне все равно не повезло.
Кто-нибудь еще пытался?

4b9b3361

Ответ 1

Я столкнулся с этой проблемой, сначала мы работали над ней, подключившись к NSRunLoop и визуализируя изображение, а затем объединив их. Это было действительно грязно.

Затем мы обнаружили фрагмент кода, который, по-видимому, решил бы эту проблему, но вы должны быть готовы немного подумать за пределами коробки.

В этой структуре записывается видео с UIWindow, тогда мы просто останавливаем запись. Перетаскивая его через AVAssetImageGenerator (или что-то в этом роде) и захватывая изображение.

Как я уже говорил, это очень странный способ решить эту проблему, но, похоже, для нас это хорошо.

Код для (ASScreenRecorder) можно найти в этой библиотеке здесь.

https://github.com/alskipp/ASScreenRecorder

Одним из наших меню в нашем продукте был OpenGL, а у некоторых были видеоролики! И это отлично сработало для нас. Но я не могу быть уверенным, было ли это чем-то особенным для нашей реализации и использования OpenGL. Это определенно работает для просмотра камеры, хотя в качестве примера демонстрируется видео.