ReplayKit框架入門指南
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
ReplayKit框架提供了RPScreenRecorder類以及類單例方法sharedRecorder()供您進(jìn)行游戲錄制。這個(gè)實(shí)例對(duì)象負(fù)責(zé)檢查設(shè)備的記錄功能,包括啟動(dòng)、停止以及丟棄記錄,并可以選擇啟動(dòng)麥克風(fēng)讓玩家錄制真人語音解說!
打開從GitHub下載的初始工程中GameViewController.swift文件。在文件頂部,導(dǎo)入ReplayKit框架。
import ReplayKit
接下來,在用戶按下Start Recording按鈕時(shí)調(diào)用GameViewController類中的startRecording(_:)這個(gè)方法開始錄制。
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實(shí)例以檢查我們的設(shè)備錄制功能是否可用。如果功能可用,我們便可以通過調(diào)用startRecordingWithMicrophone(_:handler:)方法啟動(dòng)一段記錄。此方法的第一個(gè)參數(shù)為BOOL類型值,表示是否開啟設(shè)備的麥克風(fēng),第二個(gè)參數(shù)則為完成后回調(diào)的代碼塊。如果出現(xiàn)一些錯(cuò)誤,RepalyKit框架可以通過代碼塊返回給你并提示您錯(cuò)誤的信息。如果一切準(zhǔn)備就緒,我們改變按鈕的式樣告知用戶錄制已開始,再次點(diǎn)擊可以停止錄制。
編譯運(yùn)行你的應(yīng)用程序并嘗試按下綠色按鈕,你會(huì)看到類似一團(tuán)火焰的粒子效果,如果你點(diǎn)擊Start Recording,你會(huì)看到這樣的警告,如圖:
注意,這個(gè)警告每次會(huì)在你開始錄制時(shí)出現(xiàn)。然而,一旦用戶選擇了其中一種偏好設(shè)置,系統(tǒng)會(huì)在接下來的8分鐘記住這個(gè)選擇。
在你選擇選項(xiàng)之后,Start Recording按鈕變?yōu)榱思t色的Stop Recording按鈕。
停止,丟棄和編輯記錄
現(xiàn)在,我們的app可以開始ReplayKit的錄制,是時(shí)候去了解在完成的時(shí)候編寫怎樣的代碼了。在GameViewController類中實(shí)現(xiàn)stopRecording(_:)這個(gè)方法:
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 } } }
繼續(xù)一步一步地研究這個(gè)方法的實(shí)現(xiàn)。我們還是用RPScreenRecorder的實(shí)例對(duì)象調(diào)用stopRecordingWithHandler(_:)這個(gè)方法,這次在回調(diào)的塊中,我們通過檢查previewController存不存在來判斷app完成錄制的成功與否。
我們創(chuàng)建一個(gè)UIAlertController,它有兩個(gè)action,一個(gè)為丟棄記錄,另一個(gè)為回看記錄。選擇丟棄記錄則調(diào)用discardRecordingWithHandler(_:)這個(gè)方法。要注意的是,這個(gè)方法只能在確保錄制成功地完成后才可以調(diào)用,要是在錄制進(jìn)行的時(shí)候就調(diào)用的話,雖然系統(tǒng)不會(huì)拋出任何錯(cuò)誤,但是也不會(huì)丟棄任何記錄。
選擇回看記錄,我們就呈現(xiàn)previewController視圖,它是RPPreviewController類的實(shí)例,從stopRecordingWithHandler(_:)方法回調(diào)塊中返回給我們,用來回看、編輯或分享記錄。這個(gè)previewController視圖控制器實(shí)例是唯一能夠訪問到由ReplayKit生成的視頻文件,它的職能就是負(fù)責(zé)保存/分享記錄。
最后,別忘了恢復(fù)startRecording按鈕以便再次另一段記錄的開始!
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
ReplayKit框架入門指南下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問題? 380
- 華為全新鴻蒙蓄勢(shì)待發(fā) 僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)應(yīng)用 719
- 蘋果手機(jī)系統(tǒng)iOS 17遭用戶質(zhì)疑 731
- iPhone12輻射超標(biāo)?蘋果推送iOS 17.1解決此事 750
- 傳華為囤積零部件 目標(biāo)明年智能手機(jī)出貨7000萬部;消息稱 MiOS 僅限國(guó)內(nèi),小米 28208
- 蘋果推送iOS17.0.3,解決iPhone15Pro系列存在機(jī)身過熱 216
- Testin云測(cè)兼容和真機(jī)服務(wù)平臺(tái)中上線iPhone 15系列手機(jī) 208
- 利爾達(dá)推出搭載HooRiiOS的Matter模組 145
- 運(yùn)放參數(shù)解析:輸入偏置電流(Ibias)和失調(diào)電流(Ios) 128
- 昆侖太科發(fā)布支持國(guó)產(chǎn)飛騰騰銳D2000芯片的開源BIOS固件版本 448