【发布时间】:2016-01-01 09:22:59
【问题描述】:
我想知道有没有办法强制 replaykit 以方形模式只记录屏幕的一部分?现在的API好像是全屏录的!
【问题讨论】:
-
wwdc 的那个人说了一些关于为类似目的指定另一个 UIWindow 的事情。不确定该 UIWindow 是否可以是方形的,或者它是否必须是全屏的,但我想目的是只记录某些部分。
标签: ios objective-c replaykit
我想知道有没有办法强制 replaykit 以方形模式只记录屏幕的一部分?现在的API好像是全屏录的!
【问题讨论】:
标签: ios objective-c replaykit
ReplayKit 记录屏幕上的所有内容,免除系统提示和对话框。
但是,您可以将另一个 UIWindow 覆盖在主 UIWindow 之上,并将掩码应用于空 UIView 以隐藏部分屏幕并强制进行方形录制。
但最终录制的帧率仍将与屏幕相同。
_overlayWindow = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds]; //Full sized window
_overlayWindow.backgroundColor = [UIColor clearColor];
_overlayWindow.userInteractionEnabled = false;
_overlayWindow.hidden = NO;
UIView *maskedView = [[UIView alloc] initWithFrame:_overlayWindow.bounds];
// Create a mask layer
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGRect maskRect = CGRectMake(0, 0, 200, 200);
// Create a path with the rectangle in it.
CGPathRef path = CGPathCreateWithRect(maskRect, NULL);
maskLayer.path = path;
// Set the mask of the view.
maskedView.layer.mask = maskLayer;
[_overlayWindow addSubview:maskedView];
【讨论】:
目前 ReplayKit 框架不提供屏幕大小方面的屏幕录制自定义。所以你必须记录整个 GamePlay 屏幕。
【讨论】: