介紹
- iOS 中使用
RPScreenRecorder進(jìn)行專門(mén)的錄屏操作。 - 開(kāi)始錄屏?xí)r會(huì)彈出授權(quán)對(duì)話框,錄制過(guò)程中是無(wú)感的,停止錄制之后可以彈出錄制的預(yù)覽界面,然后可以保存到相冊(cè)。
- 錄屏的同時(shí)可以錄制麥克風(fēng)的聲音與攝像頭的內(nèi)容。
- 需要導(dǎo)入
ReplayKit模塊。
案例
import ReplayKit
import UIKit
class ViewController: UIViewController {
// 顯示攝像頭
var cameraView: UIView?
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "開(kāi)始錄屏",
style: .plain,
target: self,
action: #selector(startRecording))
}
@objc func startRecording() {
guard RPScreenRecorder.shared().isAvailable else { return }
// 獲取RPScreenRecorder
let recorder = RPScreenRecorder.shared()
// 開(kāi)啟麥克風(fēng)
recorder.isMicrophoneEnabled = true
// 開(kāi)啟攝像頭
recorder.isCameraEnabled = true
// 攝像頭類型(前、后攝像頭)
recorder.cameraPosition = .front
// 開(kāi)始錄制
recorder.startRecording { [unowned self] error in
if let error = error {
print(error.localizedDescription)
} else {
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "停止錄屏",
style: .plain,
target: self,
action: #selector(self.stopRecording))
// 設(shè)置攝像頭
guard let cameraView = recorder.cameraPreviewView else { return }
cameraView.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
cameraView.center = view.center
view.addSubview(cameraView)
self.cameraView = cameraView
}
}
}
@objc func stopRecording() {
let recorder = RPScreenRecorder.shared()
// 停止錄制
recorder.stopRecording { [unowned self] preview, _ in
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "開(kāi)始錄屏",
style: .plain,
target: self,
action: #selector(self.startRecording))
if let preview = preview {
// 設(shè)置代理
preview.previewControllerDelegate = self
self.present(preview, animated: true)
}
}
cameraView?.removeFromSuperview()
}
}
extension ViewController: RPPreviewViewControllerDelegate {
// MARK: 完成預(yù)覽
func previewControllerDidFinish(_ previewController: RPPreviewViewController) {
dismiss(animated: true)
}
}
注意:需要在真機(jī)運(yùn)行測(cè)試。