首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相机预览层使按钮不可见

相机预览层使按钮不可见
EN

Stack Overflow用户
提问于 2017-07-30 04:52:58
回答 2查看 758关注 0票数 2

我试图在相机预览上添加一个按钮,但当我运行程序时它不显示(我有限制)。我查看了代码并尝试进行调试,但我是swift和Xcode的新手,一般情况下我对调试也是新手。我看到,当我注释掉相机预览层时,按钮出现了。谢谢!

代码语言:javascript
复制
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)
    }  
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-30 05:00:11

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

Apple Documentation on ZPosition

票数 2
EN

Stack Overflow用户

发布于 2020-01-03 19:21:37

代码语言:javascript
复制
You just have to add button as subview to view that is working as a preview for your avcamera.

class RecordVC {
    @IBOutlet weak var vwRecordVideo : UIView!
    @IBOutlet weak var btnGallary : UIButton!
override func viewDidLoad() {
    super.viewDidLoad()
        vwRecordVideo.addSubview(cameraButton)
        vwRecordVideo.addSubview(btnGallary)
     }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45393951

复制
相关文章

相似问题

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