任何人都可以向我解释为什么我在这段代码中收到错误 我的代码永远不会出现在打印语句中,"视频预览层被添加为子层"。我不知道为什么会这样。视频预览图层显然是在手工创建之后创建的,然后被发送到摄像机视图的子图层。我的应用程序是基于分页的应用程序。这是我的第二个观点。我的根视图控制器现在是空白的,我只是想确保过渡到我的相机是无缝的。当相机是我的应用程序中的第一页或只有一个视图控制器时,一切正常。但由于某种原因,它告诉我有一个未解开的零
/* Start The Capture Session */
func startSession() {
println("Now starting the session")
println("About to add session inputs...")
var error: NSError? = nil
let videoCapture = AVCaptureDeviceInput(device: self.cameraCaptureDevice, error: &error)
if error != nil {
println("Error, failed to add camera Capture Device: \(error?.description)")
}
// add video input
if self.session.canAddInput(videoCapture) {
self.session.addInput(videoCapture)
}
println("Start configuring the capture")
// config capture session
if !session.running {
// set JPEG output
self.stillImageOutput = AVCaptureStillImageOutput()
let outputSettings = [ AVVideoCodecKey : AVVideoCodecJPEG ]
self.stillImageOutput!.outputSettings = outputSettings
println("Successfully configured stillImageOutput")
// add output to session
println("Adding still image output to capture session")
if self.session.canAddOutput(stillImageOutput) {
self.session.addOutput(stillImageOutput)
}
println("Successfully added still image output")
println("Displaying camera in UI")
// display camera in UI
videoPreviewLayer = AVCaptureVideoPreviewLayer(session: session)
println("Video Preview Layer set")
cameraView.layer.addSublayer(videoPreviewLayer)
println("Video Preview Layer Added as sublayer")
videoPreviewLayer!.frame = cameraView.layer.frame
println("Video Preview frame set")
videoPreviewLayer!.videoGravity = AVLayerVideoGravityResizeAspectFill
println("Camera successully can display")
// start camera
self.session.startRunning()
println("Capture Session initiated")
}
}
答案 0 :(得分:2)
问题是您在cameraView
为零时运行此代码。你需要问问自己为什么会这样。如果cameraView
是@IBOutlet
,那么可能会发生这种情况,例如,如果您从视图控制器的外部调用startSession
,那么在视图控制器上正在创建但尚未调用自己的viewDidLoad
(在调用viewDidLoad
之前,插座连接未连接)。