您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>通讯/手机编程>

ReplayKit框架入门指南

大小:0.3 MB 人气: 2017-09-26 需要积分:1

  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,你会看到这样的警告,如图:

  ReplayKit框架入门指南

  注意,这个警告每次会在你开始录制时出现。然而,一旦用户选择了其中一种偏好设置,系统会在接下来的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%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!