首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置预览层的框架会导致不正确的帧设置。

设置预览层的框架会导致不正确的帧设置。
EN

Stack Overflow用户
提问于 2016-01-31 00:28:53
回答 2查看 2.2K关注 0票数 2

我在PBJVision上遇到了麻烦。

我将它集成到Swift项目中,当我试图设置预览层的框架时,它会导致一个不一致的框架:

我有这样的代码:

代码语言:javascript
复制
var _previewLayer: AVCaptureVideoPreviewLayer = PBJVision.sharedInstance().previewLayer
@IBOutlet weak var previewView: UIView! // this is the white view in the back

let bounds = self.previewView.layer.bounds
_previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
_previewLayer.bounds = bounds
_previewLayer.position = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds))
previewView.layer.addSublayer(_previewLayer)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-03 04:24:21

_previewLayer显示子视图时,您试过调整previewView的帧大小吗?

子类UIView用于previewView,为AVCaptureVideoPreviewLayer设置一个属性,并将其框架设置为与视图的界限相匹配:

代码语言:javascript
复制
class PreviewView: UIView {

    let previewLayer: AVCaptureVideoPreviewLayer?

    override func layoutSubviews() {
        self.previewLayer?.frame = self.bounds;
    }
}
票数 4
EN

Stack Overflow用户

发布于 2018-05-31 16:15:31

我也有过同样的问题。

我尝试了@rkyr推荐(在viewDidLayoutSubviews方法中设置框架),但没有成功。我还想在不添加子类的情况下修复它。

我能够通过两个更改来修复它:-确保previewLayer被定义为AVCaptureVideoPreviewLayer (CALayer的子类)而不是CALayer,这就是我的情况

代码语言:javascript
复制
var previewLayer: AVCaptureVideoPreviewLayer? // :CALayer
  • 确保设置了层的框架,并在设置了层会话的所有设置之后将其添加到视图中:此代码工作: captureSession = AVCaptureSession()让captureDevice = AVCaptureDevice.default(for: AVMediaType.video)做{ let input = try AVCaptureDeviceInput(device: captureDevice!)CaptureSession?.addInput(输入)}onErrorCloseAndReturn(错误:错误)} let dataOutput = AVCaptureVideoDataOutput() dataOutput.videoSettings =(KCVPixelBufferPixelFormatTypeKey as NSString)作为字符串):NSNumber(值: kCVPixelFormatType_32BGRA) dataOutput.alwaysDiscardsLateVideoFrames = true if captureSession!.canAddOutput(dataOutput) { captureSession?.addOutput(dataOutput) } captureSession?.commitConfiguration() let =DispatchQueue(标签:“dataOutput”)dataOutput(self,queue: queue) ()()=(会话:!)previewLayer?.frame = self.view.layer.bounds self.view.layer.addSublayer(previewLayer!)

我觉得这有帮助..。E

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

https://stackoverflow.com/questions/35108928

复制
相关文章

相似问题

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