首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CALayer内容出界- iOS

CALayer内容出界- iOS
EN

Stack Overflow用户
提问于 2013-01-09 12:17:49
回答 3查看 16.7K关注 0票数 9

我试图实现相机变焦使用CGAffinetransform。转换是很好的,但是当我将其缩放到更大的大小时,它就会脱离我分配给AVCaptureVideoPreviewLayer的框架。我尝试将masksToBounds属性设置为YES,但没有帮助。

我能把它包含在它的框架内吗?

编辑:

我想要的是,我可以为摄像机预览层指定一个特定的区域,如果我对其应用缩放变换(即预览层的帧被扩展),那么在指定区域之外的部分就会被裁剪。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-09 15:10:18

你应该把你正在缩放的一层放到另一层中,然后把另一层(上层)屏蔽掉。同样的事情适用于视图。

也就是说,您有两个视图/层:clippingViewscalingView,其中scalingView是clippingView的子视图,clippingView是实际剪辑到其边界的视图。

代码语言:javascript
复制
[clippingView addSubview:scalingView];
clippingView.clipsToBounds = YES;

或使用图层

代码语言:javascript
复制
[clippingLayer addSublayer:scalingLayer];
clippingLayer.masksToBounds = YES;
票数 38
EN

Stack Overflow用户

发布于 2015-01-22 00:32:22

我发现你们都是对的,但我想澄清一下。

假设我们通过AVCaptureVideoPreviewLayer将类似[self.view.layer addSublayer:previewLayer]的内容添加到视图中

  1. self clipsToBounds什么也不做,除非你告诉它的主层要遮掩到边界。[self.view.layer masksToBounds];
  2. 仅仅因为您的视图有一个框架,并且它的层也有,并不意味着IT有界限。如果它没有界限,那么就没有什么可以掩饰的了。这个self.view.layer.bounds = self.view.frame也是如此;

所以这里是所有的together..keep,我在我自己的UIView类中这样做,所以我不需要调用self.view。

代码语言:javascript
复制
previewLayer.bounds = self.frame;
self.layer.bounds = self.frame;

self.layer.masksToBounds = YES;
previewLayer.masksToBounds = YES;

[self setBounds:self.frame];
[self clipsToBounds];
票数 4
EN

Stack Overflow用户

发布于 2013-01-10 11:59:05

我要添加的视图的clipsToBounds属性应该设置为YES

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14235032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档