最近在搞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()
}
}
}
网友评论