ReplayKit框架入门指南
ReplayKit框架提供了RPScreenRecorder类以及类单例方法sharedRecorder()供您进行游戏录制。这个实例对象负责检查设备的记录功能,包括启动、停止以及丢弃记录,并可以选择启动麦克风让玩家录制真人语音解说!
打开从GitHub下载的初始工程中GameViewController.swift文件。在文件顶部,导入ReplayKit框架。
import ReplayKit
接下来,在用户按下Start Recording按钮时调用GameViewController类中的startRecording(_:)这个方法开始录制。
func startRecording(sender: UIButton) { if RPScreenRecorder.sharedRecorder().available { RPScreenRecorder.sharedRecorder().startRecordingWithMicrophoneEnabled(true, handler: { (error: NSError?) -》 Void in if error == nil { // Recording has started sender.removeTarget(self, action: “startRecording:”, forControlEvents: .TouchUpInside) sender.addTarget(self, action: “stopRecording:”, forControlEvents: .TouchUpInside) sender.setTitle(“Stop Recording”, forState: .Normal) sender.setTitleColor(UIColor.redColor(), forState: .Normal) } else { // Handle error } }) } else { // Display UI for recording being unavailable } }
跟着代码一步一步走。我们通过sharedRecorder()方法访问RPScreenRecorder实例以检查我们的设备录制功能是否可用。如果功能可用,我们便可以通过调用startRecordingWithMicrophone(_:handler:)方法启动一段记录。此方法的第一个参数为BOOL类型值,表示是否开启设备的麦克风,第二个参数则为完成后回调的代码块。如果出现一些错误,RepalyKit框架可以通过代码块返回给你并提示您错误的信息。如果一切准备就绪,我们改变按钮的式样告知用户录制已开始,再次点击可以停止录制。
编译运行你的应用程序并尝试按下绿色按钮,你会看到类似一团火焰的粒子效果,如果你点击Start Recording,你会看到这样的警告,如图:
注意,这个警告每次会在你开始录制时出现。然而,一旦用户选择了其中一种偏好设置,系统会在接下来的8分钟记住这个选择。
在你选择选项之后,Start Recording按钮变为了红色的Stop Recording按钮。
停止,丢弃和编辑记录
现在,我们的app可以开始ReplayKit的录制,是时候去了解在完成的时候编写怎样的代码了。在GameViewController类中实现stopRecording(_:)这个方法:
func stopRecording(sender: UIButton) { RPScreenRecorder.sharedRecorder().stopRecordingWithHandler { (previewController: RPPreviewViewController?, error: NSError?) -》 Void in if previewController != nil { let alertController = UIAlertController(title: “Recording”, message: “Do you wish to discard or view your gameplay recording?”, preferredStyle: .Alert) let discardAction = UIAlertAction(title: “Discard”, style: .Default) { (action: UIAlertAction) in RPScreenRecorder.sharedRecorder().discardRecordingWithHandler({ () -》 Void in // Executed once recording has successfully been discarded }) } let viewAction = UIAlertAction(title: “View”, style: .Default, handler: { (action: UIAlertAction) -》 Void in self.presentViewController(previewController!, animated: true, completion: nil) }) alertController.addAction(discardAction) alertController.addAction(viewAction) self.presentViewController(alertController, animated: true, completion: nil) sender.removeTarget(self, action: “stopRecording:”, forControlEvents: .TouchUpInside) sender.addTarget(self, action: “startRecording:”, forControlEvents: .TouchUpInside) sender.setTitle(“Start Recording”, forState: .Normal) sender.setTitleColor(UIColor.blueColor(), forState: .Normal) } else { // Handle error } } }
继续一步一步地研究这个方法的实现。我们还是用RPScreenRecorder的实例对象调用stopRecordingWithHandler(_:)这个方法,这次在回调的块中,我们通过检查previewController存不存在来判断app完成录制的成功与否。
我们创建一个UIAlertController,它有两个action,一个为丢弃记录,另一个为回看记录。选择丢弃记录则调用discardRecordingWithHandler(_:)这个方法。要注意的是,这个方法只能在确保录制成功地完成后才可以调用,要是在录制进行的时候就调用的话,虽然系统不会抛出任何错误,但是也不会丢弃任何记录。
选择回看记录,我们就呈现previewController视图,它是RPPreviewController类的实例,从stopRecordingWithHandler(_:)方法回调块中返回给我们,用来回看、编辑或分享记录。这个previewController视图控制器实例是唯一能够访问到由ReplayKit生成的视频文件,它的职能就是负责保存/分享记录。
最后,别忘了恢复startRecording按钮以便再次另一段记录的开始!
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%
下载地址
ReplayKit框架入门指南下载
相关电子资料下载
- iOS17.1可能明天发布,iOS17.1主要修复哪些问题? 380
- 华为全新鸿蒙蓄势待发 仅支持鸿蒙内核和鸿蒙系统应用 719
- 苹果手机系统iOS 17遭用户质疑 731
- iPhone12辐射超标?苹果推送iOS 17.1解决此事 750
- 传华为囤积零部件 目标明年智能手机出货7000万部;消息称 MiOS 仅限国内,小米 28208
- 苹果推送iOS17.0.3,解决iPhone15Pro系列存在机身过热 216
- Testin云测兼容和真机服务平台中上线iPhone 15系列手机 208
- 利尔达推出搭载HooRiiOS的Matter模组 145
- 运放参数解析:输入偏置电流(Ibias)和失调电流(Ios) 128
- 昆仑太科发布支持国产飞腾腾锐D2000芯片的开源BIOS固件版本 448