iOS 屏幕录制功能

系统框架

#import <ReplayKit/ReplayKit.h> // 系统视频录制框架

声明协议

<RPPreviewViewControllerDelegate>

实现代码:

{
    // notice
    // 在点击录制按钮后会弹出用户允许提示,分别为录制屏幕与音频、只录制屏幕与不允许。
    //RepalyKit与AVPlayer不相互兼容,所以RepalyKit可能无法录制AVPlayer呈现的画面
    //判断是否已经开始录制回放
    if (sender.isSelected) {
        //停止录制回放,并显示回放的预览,在预览中用户可以选择保存视频到相册中、放弃、或者分享出去
        [[RPScreenRecorder sharedRecorder] stopRecordingWithHandler:^(RPPreviewViewController * _Nullable previewViewController, NSError * _Nullable error) {
            if (error) {
                NSLog(@"%@", error);
                //处理发生的错误,如磁盘空间不足而停止等
            }
            if (previewViewController) {
                //设置预览页面到代理
                previewViewController.previewControllerDelegate = self;
                [self presentViewController:previewViewController animated:YES completion:nil];
            }
        }];
        sender.selected = NO;
        return;
    }
    //如果还没有开始录制,判断系统是否支持
    if ([RPScreenRecorder sharedRecorder].available) {
        NSLog(@"OK");
        sender.selected = YES;
        //如果支持,就使用下面的方法可以启动录制回放
        [[RPScreenRecorder sharedRecorder] startRecordingWithMicrophoneEnabled:YES handler:^(NSError * _Nullable error) {
            NSLog(@"%@", error);
            //处理发生的错误,如设用户权限原因无法开始录制等
        }];
    } else {
        NSLog(@"录制回放功能不可用");
    }
}

回放预览界面的代理方法

- (void)previewControllerDidFinish:(RPPreviewViewController *)previewController {
    //用户操作完成后,返回之前的界面
    [previewController dismissViewControllerAnimated:YES completion:nil];
}

-------------------- over -----------------

 

posted @ 2018-07-30 09:38  走路蹩脚的火星人  阅读(743)  评论(0编辑  收藏  举报