1
Swift3 iOS10應用程序。我把一個SCNView
放在故事板框架中。我把一個UIView
放在(帶到前面)的頂部,並將其尺寸調整爲僅填充屏幕中心的一部分。AVFoundation預覽不會出現
在我的viewDidLoad
中,我使用AVFoundation查找相機,構建會話,添加輸入,進行預覽,然後將該預覽添加到UIView
的圖層中。
我也得到一個白色矩形,而不是預覽:
我以爲我已經錯過了什麼地方了一步......
// 3D scene and vars
@IBOutlet var sceneView: SCNView!
var camera: SCNNode!
var sphere: SCNNode!
// camera scene and vars
@IBOutlet var cameraView: UIView!
var cameraSession: AVCaptureSession = AVCaptureSession()
var cameraDevice : AVCaptureDevice!
var cameraInput : AVCaptureDeviceInput!
var cameraLayer: AVCaptureVideoPreviewLayer!
override func viewDidLoad() {
... 3D setup here ...
cameraDevice = AVCaptureDevice.defaultDevice(withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .back)
do {
let possibleCameraInput: AnyObject? = try AVCaptureDeviceInput(device: cameraDevice)
if let anInput = possibleCameraInput as? AVCaptureDeviceInput {
if cameraSession.canAddInput(anInput) {
cameraSession.addInput(anInput)
}
}
} catch _ {
//TODO handle this error
}
// add the preview layer to our imageview
if cameraSession.inputs.count > 0 {
cameraLayer = AVCaptureVideoPreviewLayer(session: cameraSession) as AVCaptureVideoPreviewLayer
cameraView.layer.addSublayer(cameraLayer)
}
cameraSession.startRunning()
我從來沒有嘗試過這從SCNView之前,但你做什麼看起來確定。如果你有問題的ID建議首先填寫那些TODO捕獲錯誤。確保你進入你的if語句並真正獲得輸入,確保你的視圖和圖層具有大小(檢查約束等),檢查視圖。你不是在模擬器上試試這個嗎? – Scriptable
那麼SCNView和UIView是「外部視圖」的對等體,一個Xcode會自動插入。是的,這是在我的手機上運行...添加捕捉。而且,所有的if都可以,並且沒有錯誤被拋出。 –