GPUImage闪光灯切换的坑

最近在搞GPUImage,有个需求是切换闪光灯,查了各种资料,到自己的查询中跑的时候还是没有反应。苦苦研究了一个晚上还没有解决。第二天起床刷牙的时候,突然灵光一现,前置摄像头是不是不支持闪光灯。(因为调试的时候都是直接默认前置摄像头了)。马上跑去测试。果然如预期一样。只有开启后置摄像头才能打开闪光灯。(针对GPUImage哦,因为我直接直接调用系统的闪光灯,前置摄像头的时候也能打开闪光灯,但是拍照就停止了,要关掉才能恢复正常。)

随便添加下自己的代码吧

func flashModeChange() {
    if flashMode == .off {
        if videoCamera.inputCamera.hasFlash && videoCamera.inputCamera.hasTorch {
            try? videoCamera.inputCamera.lockForConfiguration()
            if videoCamera.inputCamera.isTorchModeSupported(.on) 
                videoCamera.inputCamera.torchMode = .on
                videoCamera.inputCamera.flashMode = .on
                flashMode = .on
            }
            videoCamera.inputCamera.unlockForConfiguration()
        } else {
        
            let alertV = UIAlertController(title: "提示", message: "只有后置摄像头支持闪光灯哦", preferredStyle: .alert)
            let alertAction = UIAlertAction(title: "确定", style: .cancel, handler: nil)
            
            alertV.addAction(alertAction)
            present(alertV, animated: true, completion: nil)
            
        }
    } else {
        if videoCamera.inputCamera.hasFlash && videoCamera.inputCamera.hasTorch {
            
            try? videoCamera.inputCamera.lockForConfiguration()
            if videoCamera.inputCamera.isTorchModeSupported(.off) {
                
                videoCamera.inputCamera.torchMode = .off
                videoCamera.inputCamera.flashMode = .off
                flashMode = .off
            }
            videoCamera.inputCamera.unlockForConfiguration()
        }
    }
}

你可能感兴趣的:(GPUImage闪光灯切换的坑)