NEW: Master Swift design patterns with my latest book! >>

How to turn on the camera flashlight to make a torch

Written by Paul Hudson    @twostraws

There is one simple property required to enable or disable a device's torch, but you do need to put in some wrapper code to make it work safely. Specifically, you need to use the lockForConfiguration() and unlockForConfiguration() methods of the AVCaptureDevice class in order to make sure only one app can control the torch at a time.

You will need to import the AVFoundation framework, because that's where the AVCaptureDevice class comes from. Once that's done, add this function to your code and you're good to code:

func toggleTorch(on: Bool) {
    guard let device = AVCaptureDevice.default(for: .video) else { return }

    if device.hasTorch {
        do {
            try device.lockForConfiguration()

            if on == true {
                device.torchMode = .on
            } else {
                device.torchMode = .off
            }

            device.unlockForConfiguration()
        } catch {
            print("Torch could not be used")
        }
    } else {
        print("Torch is not available")
    }
}

With that, you can now turn the torch on like this:

toggleTorch(on: true)

Available from iOS 6.0

Did this solution work for you? Please pass it on!

Other people are reading…

About the Swift Knowledge Base

This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.

Master iOS 11 now!

My book Practical iOS 11 gives you seven complete coding projects that teach all the major new features in iOS 11 in a smart, practical way.

Click here to visit the Hacking with Swift store >>