2017-07-29 57 views
1

我想在攝像頭預覽中添加一個按鈕,但是當我運行程序時(我有約束)它不會顯示出來。我查看了代碼並試圖進行調試,但我對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) 
    } 
} 

}

回答

0

也許你可以試試按鈕zPosition設置爲1或更高。 YourButtonName.layer.zPostion = 2

Apple Documentation on ZPosition

+0

我試着將它設置爲999之前,並沒有幫助:( –

+0

林混淆。當我將它設置爲1它的工作原理,但是當我以前做過它不會在999工作。謝謝,雖然! –

+0

我不知道爲什麼會這樣。很高興它的工作! –