在需要使用录屏的 地方 引入 头文件 #import <ReplayKit/ReplayKit.h>

添加代理 RPPreviewViewControllerDelegate

因为 iOS 9.0 以下 不能使用此框架 , 而且模拟器 也不能使用

所以在使用之前需要判断

if ([RPScreenRecorder sharedRecorder].available) {

}else{

NSlog(@"该设备不支持录屏");

}

// 开启录屏

// 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(@"开始录屏");

}

}];

}

// 因为 iOS 10 以后 开启录屏 的方法改变了, 需要判断一下

/// 结束录屏

[[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];

}

}

}];

#pragma mark -- 回放预览界面的代理方法

- (void)previewControllerDidFinish:(RPPreviewViewController *)previewController {

//用户操作完成后,返回之前的界面

[previewController dismissViewControllerAnimated:YES completion:nil];

}

// 注意: 因为开启录屏的时间可能会有好几秒, 需要注意

iOS ReplayKit 录屏 框架的使用的更多相关文章

  1. Android 和 iOS 实现录屏推流的方案整理

    一.录屏推流实现的步骤 1. 采集数据 主要是采集屏幕获得视频数据,采集麦克风获得音频数据,如果可以实现的话,我们还可以采集一些应用内置的音频数据. 2. 数据格式转换 主要是将获取到的视频和音频转换 ...

  2. ios手机录屏软件哪个好

    苹果手机中的airplay镜像,是苹果手机系统的一大特色,可以轻松把手机屏幕投射电脑,这个功能使苹果手机相较安卓手机投屏会更加轻松,那么如何实现苹果手机投射电脑屏幕?下面小编便来分享ios手机录屏软件 ...

  3. iOS的录屏功能

    iOS的录屏功能其实没什么好说的,因为网上的教程很多,但是网上的Demo无一例外几乎都有一个bug,那就是iPad上会出现闪退,这也体现了国内的教程文档的一个特点,就是抄袭,教程几乎千篇一律,bug也 ...

  4. iOS模拟器录屏转gif神器

    我发现苹果的Quick Time Player用来录屏就挺好用的.打开后选择 文件 - 新建屏幕录制 - 点击录制按钮, 划出要录制的模拟器窗体 - 点击录制就可以了. 录制成mov格式还要再转成gi ...

  5. 手游录屏直播技术详解 | 直播 SDK 性能优化实践

    在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...

  6. Yosemite 给 iOS 录屏

    [Yosemite 给 iOS 录屏] Mac 升级到Yosemite后,支持iOS屏幕录制.把Mac和iPhone用数据线相连.打开QuickTime Player,新建一个影片. 从摄像头源中选择 ...

  7. 录屏状态监听之防录屏 - iOS

    继之前接到电话.短信和截屏监听需求之后,在 iOS 11.0 系统之上新增了屏幕录制的新功能玩法,所以也随之迎来了新的屏幕录制监听的需求,即防录屏功能监听 ... 通过官方文档得知 capturedD ...

  8. iOS实现组件录屏视频不可见,用户肉眼可见(类似系统键盘效果)

    系统键盘在密码框输入时,如果用户开启录屏,键盘在录屏得到的视频里会不可见,但是用户在录屏时却能看到. 为了实现这个效果,利用UItextfield在录屏下视频不可见的特性,将实现这一效果的私有UIvi ...

  9. iOS ReplayKit实时录制屏幕实现方案的细节记录

    项目有个需求,需要把ios设备上的操作画面实时传输出去,也就是类似推流手机直播画面的方案. 一番调研后发现在ios中,我们可以通过ios自带ReplayKit框架实现. 关于ReplayKit的讲解, ...

随机推荐

  1. Groovy 设计模式 -- Strategy 模式

    策略模式 https://en.wikipedia.org/wiki/Strategy_pattern In computer programming, the strategy pattern (a ...

  2. GCC编译器原理(二)------编译原理一:ELF文件(2)

    四. ELF 文件格式分析 ELF文件(目标文件)格式主要四种: 可重定向文件: 文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文 ...

  3. mysql 约束和外键约束实例

    1.约束保证数据的完整性和一致性. 2.约束分为表级约束和列级约束.(根据约束所针对的字段的数目的多少来决定) 列级约束:对一个数据列建立的约束 表级约束:对多个数据列建立的约束 列级约束即可以在列定 ...

  4. python中的*和**的用途

    def function_with_one_star(*t):    print(t, type(t)) def function_with_two_stars(**d)    print(d, ty ...

  5. sql插入oracle链接的数据

    报错OLE DB 访问接口 "OraOLEDB.Oracle" 返回了消息 "ORA-29275: 部分多字节字符". select addr from tes ...

  6. [C++]动态规划系列之Warshall算法

    /** * * @author Zen Johnny * @date 2018年3月31日 下午8:13:09 * */ package freeTest; /* [动态规划系列:Warshall算法 ...

  7. ArrayQueue的底层实现

    package zy813ture; public class MyArrayQueue1 {//双向循环数组 private Object []obj; private int front; pri ...

  8. Django 详解 中间件Middleware

    Django中间件 还是涉及到django的请求生命周期.middle ware 请求穿过中间件到达url,再经过中间件返回给用户. 简单实例 django项目根目录新建一个Middle文件夹,再新建 ...

  9. async get_event_loop

    以下论述转载自https://segmentfault.com/q/1010000007863971 答主论述清晰,很不错,可参考他的其他答案 首先,event loop 就是一个普通 Python ...

  10. Maven 分模块,启动父工程时异常

    1.1 运行方式 Maven方式:命令的 方式1:运行父工程.父工程将各个子模块聚合到一起.将ssh-web打war包发布到tomcat 方式2:直接运行web工程 其他方式:传统的,   部署到to ...