这几天比较闲就抄了个自定义拍照的demo 然后在设置 self.previewLayer的拍照区域的时候,就算我设置了从0开始,他的拍照区域还是在中间的一部分,不会改变,但是高度和起点y值是可以改变的,就不知道什么原因了,看起来demo没什么问题。
后面就试着调整了以下代码的顺序
一开始写的代码是这样的
//使用self.session,初始化预览层,self.session负责驱动input进行信息的采集,layer负责把图像渲染显示
self.previewLayer = [[AVCaptureVideoPreviewLayer alloc]initWithSession:self.session];
self.previewLayer.frame = CGRectMake(20, [[UIApplication sharedApplication] statusBarFrame].size.height + 44, Width, Height - 100 - 90);
self.previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;//使用此方法会有2.保持纵横比;填充层边界
//AVLayerVideoGravityResize 拉伸填充图层
//AVLayerVideoGravityResizeAspect保持纵横比;适合层范围内
[self.view.layer addSublayer:self.previewLayer];
videoGravity的设置是放在frame 之后的,就会出现那种设置的拍摄区域无效的问题
修改的方法是videoGravity的设置放到frame的之前,就可以设置frame了;
遇到这种情况做个笔记