2016-12-25 74 views
1

我正在嘗試製作使用相機的應用程序,但使用下面的代碼,它只顯示一個白色屏幕。當應用程序打開時,相機應該出現。自定義相機,白屏//快速3

import UIKit 
import AVFoundation 
import Foundation 

@IBOutlet var cameraView: UIView! 

var captureSession : AVCaptureSession? 
var stillImageOutput : AVCaptureStillImageOutput? 
var previewLayer : AVCaptureVideoPreviewLayer? 

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    captureSession = AVCaptureSession() 
    captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080 

    let backCamera = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) 


    do { 

     let input = try! AVCaptureDeviceInput (device: backCamera) 
     if (captureSession?.canAddInput(input) != nil) { 

      captureSession?.addInput(input) 

      stillImageOutput = AVCaptureStillImageOutput() 
      stillImageOutput?.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG] 

      if (captureSession?.canAddOutput(stillImageOutput) != nil) { 
       captureSession?.addOutput(stillImageOutput) 

       previewLayer = AVCaptureVideoPreviewLayer (session: captureSession) 
       previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect 
       previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait 
       cameraView.layer.addSublayer(previewLayer!) 
       captureSession?.startRunning() 
      } 
     } 
    } catch { 

    } 
} 


    override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    previewLayer?.frame = cameraView.bounds 
} 

使用此代碼,我看到的只是一個白色屏幕而不是正在使用的相機。謝謝。

回答

0

所以有人真的回答了這個問題,然後刪除了答案。它說「你沒有給予許可」。他是對的。

如何啓用這個是要你info.plist(可通過發現: 點擊你的項目與藍圖旁邊>去那邊Targets,挖掘你的應用程序>,看着應該說些什麼「自定義iOS目標屬性「)。

到達此處(info.plst)後,轉到列表底部並將鼠標懸停在最後一個(在我的情況下,這是」必需的設備功能「)。顯示並命名爲「隱私 - 相機使用說明」。在其旁邊的框中輸入「app name想要使用相機... [xyz]」

這應該解決它。它解決了我的問題。從這篇文章得到了我的參考。 NSCameraUsageDescription in iOS 10.0 runtime crash?