Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios torchMode在开始时闪烁并立即熄灭_Ios_Swift - Fatal编程技术网

Ios torchMode在开始时闪烁并立即熄灭

Ios torchMode在开始时闪烁并立即熄灭,ios,swift,Ios,Swift,我不明白为什么火炬没有持续打开。 它在启动时闪烁,并立即熄灭。 我也锁定和解锁了 我添加了我的部分代码,我认为这与这里的问题有关 override func viewDidLoad() { super.viewDidLoad() initCamera() } func initCamera(){ captureSession.sessionPreset = .medium guard let device = AVCaptureDevice.default(f

我不明白为什么火炬没有持续打开。
它在启动时闪烁,并立即熄灭。
我也锁定和解锁了

我添加了我的部分代码,我认为这与这里的问题有关

override func viewDidLoad() {
    super.viewDidLoad()
    initCamera()
}

func initCamera(){
    captureSession.sessionPreset = .medium

    guard let device = AVCaptureDevice.default(for: .video) else {
        print("no camera")
        return
    }
    try? device.lockForConfiguration()
    device.activeVideoMaxFrameDuration = CMTimeMake(1, 30)
    if device.hasTorch && device.isTorchAvailable && !device.isTorchActive{
        do {
            try device.setTorchModeOn(level: 1.0)
            device.torchMode = .on
        } catch {
            print("Torch could not be used")
        }
    } else {
        print("Torch is not available")
    }
    if device.isFocusModeSupported(.continuousAutoFocus){
        device.focusMode = .continuousAutoFocus
    }
    device.unlockForConfiguration()

    guard let captureInput = try? AVCaptureDeviceInput(device: device) else {return;}

    if captureSession.canAddInput(captureInput) {
        captureSession.addInput(captureInput)
    }

    let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
    view.layer.addSublayer(previewLayer)

    let videoOutput = AVCaptureVideoDataOutput()
    let queue = DispatchQueue(label: "queue image delegate", attributes: .concurrent)
    videoOutput.setSampleBufferDelegate(self, queue: queue)
    if captureSession.canAddOutput(videoOutput)
    {
        captureSession.addOutput(videoOutput)
    }
    captureSession.startRunning()
}