我找到了一个问题:如何在iOS Objection-C中并排显示摄像机的两个预览vr应用程序?
但是没有答案。
,我正在寻找Swift 3中的解决方案。
我还需要在两个预览中渲染相同的额外层。
因此,我的问题是如何并排镜像uiview以播放相机预览或其他传入的视频流?在这个阶段,我不需要立体视觉。我只需要并排显示相同的内容。就像是:https://itunes.apple.com/ca/app/3d-fpv-stereoscopic-3d-vr/id1008155528?mt = 8
我找到了答案!答案是 CarePlicatorLayer
多摄像机喂养(它不是快速的,但可以非常轻松地在swift中重新捕获)
使用CarePlicatorLayer自动复制该图层。正如文档所说,它将自动创建" ...指定数量的子层副本(源层),每个副本都可能具有应用于其上的几何,时间和颜色转换。"
>除了简单的几何或颜色转换(想想照相亭)之外,与实时预览没有太多互动,这将非常有用。我经常看到Careplicatorlayer用作创建"反射"效果的方法。
这是复制cacaptureVideOpreviewlayer的一些示例代码:
init avCaptureVideOpreviewlayer
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[previewLayer setFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.view.bounds.size.height / 4)];
init CarePlicatorLayer并设置属性
注意:这将复制实时预览层*四个**时间。*
NSUInteger replicatorInstances = 4;
CAReplicatorLayer *replicatorLayer = [CAReplicatorLayer layer];
replicatorLayer.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height / replicatorInstances);
replicatorLayer.instanceCount = instances;
replicatorLayer.instanceTransform = CATransform3DMakeTranslation(0.0, self.view.bounds.size.height / replicatorInstances, 0.0);
添加图层
注意:根据我的经验,您需要将要复制到CarePlicatorLayer的层作为sublayer。
[replicatorLayer addSublayer:previewLayer];
[self.view.layer addSublayer:replicatorLayer];
唐斯侧
使用CarePlicatorLayer的缺点是它处理了层复制的所有位置。因此,它将应用于每个实例的任何设置转换,并且都将包含在本身中。例如。将无法在两个单独的单元格上复制AvCaptureVideOpreviewLayer。