我可以使用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 不为 nil,则可以显示它
RPScreenRecorder.shared().stopRecording(handler: { (previewVc, error) in
if let previewVc = previewVc {
previewVc.delegate = self
self.present(previewVc, animated: true, completion: nil)
}
})
您可以直接从 previewVc 编辑和保存视频,但您可能想将自己(或某人)设为 RPPreviewViewControllerDelegate,这样您就可以在完成后轻松关闭 previewVc。
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。
祝你好运!