Именно для этого я смог использовать ReplayKit.
Чтобы увидеть, на что похож ReplayKit
На устройстве iOS перейдите в «Настройки» -> «Центр управления» -> «Настроить элементы управления». Переместите «Запись экрана» в раздел «Включить» и проведите пальцем вверх, чтобы открыть Центр управления. Теперь вы должны увидеть круглый значок записи экрана, и вы заметите, что когда вы нажимаете его, iOS начинает записывать ваш экран. Нажатие на синюю полосу завершит запись и сохранит видео в Фото.
Используя ReplayKit, вы можете заставить свое приложение вызывать средство записи экрана и записывать содержимое ARKit.
Как
Чтобы начать запись:
RPScreenRecorder.shared().startRecording { error in
// Handle error, if any
}
Чтобы остановить запись:
RPScreenRecorder.shared().stopRecording(handler: { (previewVc, error) in
// Do things
})
После того, как вы закончите запись, .stopRecording
предоставит вам необязательный RPPreviewViewController, который
Объект, отображающий пользовательский интерфейс, в котором пользователи могут просматривать и редактировать запись экрана, созданную с помощью ReplayKit.
Итак, в нашем примере вы можете представить previewVc, если он не равен нулю.
RPScreenRecorder.shared().stopRecording(handler: { (previewVc, error) in
if let previewVc = previewVc {
previewVc.delegate = self
self.present(previewVc, animated: true, completion: nil)
}
})
Вы сможете редактировать и сохранять видео прямо из previewVc, но вы можете сделать себя (или кого-то) RPPreviewViewControllerDelegate, чтобы вы могли легко закрыть предварительный просмотр, когда закончите.
extension MyViewController: RPPreviewViewControllerDelegate {
func previewControllerDidFinish(_ previewController: RPPreviewViewController) {
// Called when the preview vc is ready to be dismissed
}
}
Предостережения
Вы заметите, что startRecording
будет записывать "отображение приложения", поэтому, если какое-либо представление, которое у вас есть (кнопки, метки и т. д.), также будет записано. Я нашел полезным скрыть элементы управления во время записи и сообщить своим пользователям, что нажатие на экран останавливает запись, но я также читал о других, которые успешно разместили свои основные элементы управления в отдельном UIWindow.
Исключение просмотров из записи
Отдельный трюк UIWindow работает. Я смог создать окно наложения, в котором у меня была кнопка записи и таймер, и они не были записаны.
let overlayWindow = UIWindow(frame: view.frame)
let recordButton = UIButton( ... )
overlayWindow.backgroundColor = UIColor.clear
По умолчанию UIWindow
будет скрыто. Поэтому, когда вы хотите показать свои элементы управления, вы должны установить isHidden
на false
.
Удачи тебе!
person
Tulio Troncoso
schedule
27.07.2017