项目中要用到录屏功能,就研究了一下iOS的ReplayKit框架,这里简单说一下使用,在需要使用录屏的地方引入头文件,添加代理 RPPreviewViewControllerDelegate:
1 2 3 4 5 |
#import <ReplayKit/ReplayKit.h> @interface ViewController ()<RPPreviewViewControllerDelegate> @property (weak, nonatomic) IBOutlet UIButton *liveButton; @property (weak, nonatomic) IBOutlet UIButton *stopButton; @end |
因为 iOS 9.0 以下 不能使用此框架 , 而且模拟器也不能使用,所以在使用之前最好做个判断 :
1 2 3 4 5 |
if ([RPScreenRecorder sharedRecorder].available) { }else{ NSlog(@"该设备不支持录屏"); } |
因为 iOS 10 以后开启录屏的方法与之前不一样了,所以需要判断一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
- (IBAction)startRecord:(UIButton *)sender { // 开启录屏 // iOS 10.0 以上 if (([UIDevice currentDevice].systemVersion.floatValue >= 10.0f)) { [[RPScreenRecorder sharedRecorder]startRecordingWithHandler:^(NSError * _Nullable error) { if (error) { NSLog(@"error: %@",error); }else{ NSLog(@"开始录屏"); } }]; }else{ // iOS 10.0 以下 [[RPScreenRecorder sharedRecorder] startRecordingWithMicrophoneEnabled:YES handler:^(NSError * _Nullable error) { if (error) { NSLog(@"error: %@",error); }else{ NSLog(@"开始录屏"); } }]; } } - (IBAction)stopRecord:(UIButton *)sender { /// 结束录屏 NSLog(@"结束录屏"); [[RPScreenRecorder sharedRecorder] stopRecordingWithHandler:^(RPPreviewViewController * _Nullable previewViewController, NSError * _Nullable error) { if (error) { NSLog(@"error: %@", error); }else{ NSLog(@"结束录屏"); if (previewViewController) { //设置预览页面到代理 previewViewController.previewControllerDelegate = self; [self presentViewController:previewViewController animated:YES completion:nil]; } } }]; } |
回放预览界面的代理方法
1 2 3 4 |
- (void)previewControllerDidFinish:(RPPreviewViewController *)previewController { //用户操作完成后,返回之前的界面 [previewController dismissViewControllerAnimated:YES completion:nil]; } |
这里要注意一下,因为开启录屏的时间可能会有好几秒,需要稍微等待一下。
转载请注明:怼码人生 » iOS ReplayKit的使用