请问如何编写代码对ios桌面进行录屏操作?我们app是一个直播平台,老板要求把整个直播间的画面录制下来保存,请问怎么编写这个ios的代码?
网友回复
可以使用replaykit,但是只支持ios9以后的系统版本,具体示例代码如下:
#import "ViewController.h"
#import <ReplayKit/ReplayKit.h>
static NSString *StartRecord = @"开始";
static NSString *StopRecord = @"结束";
#if TARGET_IPHONE_SIMULATOR
#define SIMULATOR 1
#elif TARGET_OS_IPHONE
#define SIMULATOR 0
#endif
#define AnimationDuration (0.3)
@interface ViewController () <RPPreviewViewControllerDelegate>
{
}
@property (nonatomic, strong)UIButton *btnStart;
@property (nonatomic, strong)UIButton *btnStop;
@property (nonatomic, strong)NSTimer *progressTimer;
@property (nonatomic, strong)UIProgressView *progressView;
@property (nonatomic, strong)UIActivityIndicatorView *activity;
@property (nonatomic, strong)UIView *tipView;
@property (nonatomic, strong)UILabel *lbTip;
@property (nonatomic, strong)UILabel *lbTime;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidAppear:(BOOL)animated {
BOOL isVersionOk = [self isSystemVersionOk];
if (!isVersionOk) {
NSLog(@"系统版本需要是iOS9.0及以上才支持ReplayKit");
return;
}
if (SIMULATOR) {
[self showSimulatorWarning];
return;
}
UILabel *lb = nil;
CGSize screenSize = [UIScreen mainScreen].bounds.size;
//标题
lb = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 140)];
lb.font = [UIFont boldSystemFontOfSize:32];
lb.backgroundColor = [UIColor clearColor];
lb.textColor = [UIColor blackColor];
lb.textAlignment = NSTextAlignmentCenter;
lb.numberOfLines = 3;
lb.text = @"苹果ReplayKit Demo";
lb.center = CGPointMake(screenSize.width/2, 80);
[self.view addSubview:lb];
//创建按钮
UIButton *btn = [self createButtonWithTitle:StartRecord andCenter:CGPointMake(screenSize.width/2 - 100, 200)];
[self.view addSubview:btn];
self.btnStart = btn;
btn = [self createButtonWithTitle:StopRecord andCenter:CGPointMake(screenSize.width/2 + 100, 200)];
[self.view addSubview:btn];
self.btnStop = btn;
[self setButton:btn enabled:NO];
//loading指示
UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 280, 80)];
[self.view addSubview:view];
view.backgroundColor = [UIColor redColor];
view.layer.cornerRadius = 8.0f;
view.center = CGPointMake(screenSize.width/2, 300);
activity.center = CGPointMake(30, view.frame.size.height/2);
[view addSubview:activity];
[activity startAnimating];
self.activity = activity;
lb = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 280, 80)];
lb.font = [UIFont boldSystemFontOfSize:20];
lb.backgroundColor = [UIColor clearColor];
lb.textColor = [UIColor blackColor];
lb.layer.cornerRadius = 4.0;
lb.textAlignment = NSTextAlignmentCenter;
[view addSubview:lb];
self.lbTip = lb;
self.tipView = view;
[self hideTip];
//显示时间(用于看录制结果时能知道时间)
lb = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
lb.font = [UIFont boldSystemFontOfSize:20];
lb.backgroundColor = [UIColor redColor];
lb.textColor = [UIColor blackColor];
lb.layer.cornerRadius = 4.0;
NSDateFormatter * dateFormat = [[NSDateFormatter alloc] init] ;
[dateFormat setDateFormat: @"HH:mm:ss"];
NSString *dateString = [dateFormat stringFromDate:[NSDate date]];
lb.text = dateString;
lb.center = CGPointMake(screenSize.width/2, screenSize.height/2 + 100);
lb.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:lb];
self.lbTime = lb;
//进度条 (显示动画,不然看不出画面的变化)
UIProgressView *progress = [[UIProgressView alloc] initWithFrame:CGRectMake(0, 0, screenSize.width*0.8, 10)];
progress.center = CGPointMake(screenSize.width/2, screenSize.height/2 + 150);
progress.progressViewStyle = UIProgressViewStyleDefault;
progress.progress = 0.0;
[self.view addSubview:progress];
self.progressView = progress;
//计时器
//更新时间
[NSTimer scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(updateTimeString)
userInfo:nil
repeats:YES];
}
#pragma mark - UI控件
//显示 提示信息
- (void)showTipWithText:(NSString *)tip activity:(BOOL)activity{
[self.activity startAnimating];
self.lbTip.text = tip;
self.tipView.hidden = NO;
if (activity) {
self.activity.hidden = NO;
[self.activity startAnimating];
...点击查看剩余70%


