相机预览层使按钮不可见

菲利普·J

我正在尝试在摄像机预览上方添加一个按钮,但是运行程序时该按钮未显示(我有约束)。我调查了一下代码并尝试进行调试,但是我对swift和Xcode还是陌生的,而对于调试而言,我还是新的。我看到当我注释掉相机预览层时,该按钮出现了。谢谢!

import UIKit
import AVFoundation
import QuartzCore

class View1: UIViewController , AVCaptureVideoDataOutputSampleBufferDelegate{

let captureSession = AVCaptureSession()
var previewLayer:CALayer!
var captureDevice:AVCaptureDevice!

@IBOutlet weak var cameraView:UIView!

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    prepareCamera()
}

func prepareCamera() {
    captureSession.sessionPreset = AVCaptureSessionPreset1920x1080

    if let availableDevices = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInWideAngleCamera],                                                                                                          mediaType: AVMediaTypeVideo,                                                                                                             position: .back).devices {

        captureDevice = availableDevices.first
        beginSession()
    }
}

func beginSession() {
    do {
        let captureDeviceInput = try AVCaptureDeviceInput(device: captureDevice)
        captureSession.addInput(captureDeviceInput)
    } catch {
        print(error.localizedDescription)
        //Figure out what to do here 
 }
    if let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) {



        self.previewLayer = previewLayer
        self.view.layer.addSublayer(self.previewLayer)
        self.previewLayer.frame = self.view.layer.frame
        captureSession.startRunning()

        let dataOutput = AVCaptureVideoDataOutput()
        dataOutput.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString): NSNumber(value: kCVPixelFormatType_32BGRA)]

        dataOutput.alwaysDiscardsLateVideoFrames = true

        if captureSession.canAddOutput(dataOutput){

            captureSession.addOutput(dataOutput)
            captureSession.commitConfiguration()
        }

        let queue = DispatchQueue(label: "com.PhotoAllergy.captureQueue")
        dataOutput.setSampleBufferDelegate(self, queue: queue)
    }  
}

}

the_kaseys

也许您可以尝试将zPosition按钮的设置为1或更高。YourButtonName.layer.zPostion = 2

ZPosition上的Apple文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章