Ios 如何使用闪光灯在定制相机上拍照?

Ios 如何使用闪光灯在定制相机上拍照?,ios,iphone,swift,camera,avcapturesession,Ios,Iphone,Swift,Camera,Avcapturesession,我到处都找过了,我不知道如何在拍照时切换闪光灯,它会像iPhone相机一样闪烁4次 我用这个功能来切换闪光灯 func toggleFlash() { let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) if (device.hasTorch) { device.lockForConfiguration(nil) if (device.torchMode

我到处都找过了,我不知道如何在拍照时切换闪光灯,它会像iPhone相机一样闪烁4次

我用这个功能来切换闪光灯

func toggleFlash() {
    let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
    if (device.hasTorch) {
        device.lockForConfiguration(nil)
        if (device.torchMode == AVCaptureTorchMode.On) {
            device.torchMode = AVCaptureTorchMode.Off
        } else {
            device.setTorchModeOnWithLevel(1.0, error: nil)
        }
        device.unlockForConfiguration()
    }
}
我用这个功能来拍照

func didPressTakePhoto(){
    if let videoConnection = stillImageOutput?.connectionWithMediaType(AVMediaTypeVideo){
        videoConnection.videoOrientation = AVCaptureVideoOrientation.Portrait
        stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: {
            (sampleBuffer, error) in

            if sampleBuffer != nil {

                var imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
                var dataProvider  = CGDataProviderCreateWithCFData(imageData)
                var cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, kCGRenderingIntentDefault)

                var image:UIImage!

                if self.camera == true {
                    image = UIImage(CGImage: cgImageRef, scale: 1.0, orientation: UIImageOrientation.Right)

                } else {
                    image = UIImage(CGImage: cgImageRef, scale: 1.0, orientation: UIImageOrientation.LeftMirrored)

                }
                self.tempImageView.image = image
                self.tempImageView.hidden = false
            }


        })
    }


}

这是一个非常混乱的方式。不干净

func didPressTakePhoto(){

toggleFlash()
sleep(1)
toggleFlash()

if let videoConnection = stillImageOutput?.connectionWithMediaType(AVMediaTypeVideo){
    videoConnection.videoOrientation = AVCaptureVideoOrientation.Portrait
    stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: {
        (sampleBuffer, error) in

        if sampleBuffer != nil {

            toggleFlash()

            var imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
            var dataProvider  = CGDataProviderCreateWithCFData(imageData)
            var cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, kCGRenderingIntentDefault)

            var image:UIImage!
            if self.camera == true {
                image = UIImage(CGImage: cgImageRef, scale: 1.0, orientation: UIImageOrientation.Right)

            } else {
                image = UIImage(CGImage: cgImageRef, scale: 1.0, orientation: UIImageOrientation.LeftMirrored)

            }
            self.tempImageView.image = image
            self.tempImageView.hidden = false
        }


    })
}


}
这很混乱,只是一个想法。
您也可以使用NSTimer来启动两次。

我想这里已经给出了答案:@charlestruck不,我正在尝试制作它,以便在拍照时可以合并闪光灯。谁的抱歉!我以为你的意思是它不起作用了!但是时机有点不合适。我一直在瞎弄睡眠,但我一直没能把它做好。我该怎么设置呢?你可以尝试更改
,我去试试!另外,我似乎无法将睡眠设置为双倍。闪光灯似乎变慢了。这张照片是在闪光灯结束前拍摄的。更新代码。基本上在按下按钮时将其打开,然后在拍摄图像时将其关闭。