objective-c - 请教一个关于视频渲染UI CAlayer的问题 急求!!!

【字号: 日期:2023-12-06浏览:37作者:雯心

问题描述

1.我在正方形的区域里显示了本地的视频,当我关闭本地摄像头后修改了这个显示视频的UI的frame,我吧它改小了。2.再次显示本地视频的时候除了在我指定的区域显示了视频外,在原来的区域类还遗留了之前关闭视频时最后一帧的图像。 我希望蓝色框中搞得区域也为灰色3.我现在想清空这最后一帧的图像,请问我应该怎么处理呢?

我试过 removeFromSuperLayer 和 removeFromSuperView 以及向这个显示视频的UI上添加一层view 但是都没有达到效果。

下面是我的效果图片

objective-c - 请教一个关于视频渲染UI CAlayer的问题 急求!!!

objective-c - 请教一个关于视频渲染UI CAlayer的问题 急求!!!

下面是我的核心代码:

elf.localVideoSurface = [AVCaptureVideoPreviewLayer layerWithSession: (AVCaptureSession*)session];

self.localVideoSurface.frame= CGRectMake(0, 0, self.theLocalView.frame.size.width, self.theLocalView.frame.size.height);self.localVideoSurface.videoGravity = AVLayerVideoGravityResizeAspectFill;[self.theLocalView.layer addSublayer:self.localVideoSurface];

问题解答

回答1:

我的问题已经得到了解决。 不过方法不是清楚之前UIView上layer上渲染的图像,而是在这个之上再渲染一层新的UIView的layer,用这个方式来覆盖掉之前的layer。代码如下://覆盖掉关闭视频时停留在theLocalView上的最后一帧的图像

UIView *back = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.theLocalView.frame.size.width, self.theLocalView.frame.size.height)];back.backgroundColor = backColor;[self.theLocalView.layer addSublayer:back.layer];back = nil;

相关文章: