我试图实现相机变焦使用CGAffinetransform。转换是很好的,但是当我将其缩放到更大的大小时,它就会脱离我分配给AVCaptureVideoPreviewLayer的框架。我尝试将masksToBounds属性设置为YES,但没有帮助。
我能把它包含在它的框架内吗?
编辑:
我想要的是,我可以为摄像机预览层指定一个特定的区域,如果我对其应用缩放变换(即预览层的帧被扩展),那么在指定区域之外的部分就会被裁剪。
发布于 2013-01-09 15:10:18
你应该把你正在缩放的一层放到另一层中,然后把另一层(上层)屏蔽掉。同样的事情适用于视图。
也就是说,您有两个视图/层:clippingView和scalingView,其中scalingView是clippingView的子视图,clippingView是实际剪辑到其边界的视图。
[clippingView addSubview:scalingView];
clippingView.clipsToBounds = YES;或使用图层
[clippingLayer addSublayer:scalingLayer];
clippingLayer.masksToBounds = YES;发布于 2015-01-22 00:32:22
我发现你们都是对的,但我想澄清一下。
假设我们通过AVCaptureVideoPreviewLayer将类似[self.view.layer addSublayer:previewLayer]的内容添加到视图中
[self.view.layer masksToBounds];self.view.layer.bounds = self.view.frame也是如此;所以这里是所有的together..keep,我在我自己的UIView类中这样做,所以我不需要调用self.view。
previewLayer.bounds = self.frame;
self.layer.bounds = self.frame;
self.layer.masksToBounds = YES;
previewLayer.masksToBounds = YES;
[self setBounds:self.frame];
[self clipsToBounds];发布于 2013-01-10 11:59:05
我要添加的视图的clipsToBounds属性应该设置为YES。
https://stackoverflow.com/questions/14235032
复制相似问题