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.

Get the ultimate experience

The Swift Power Pack includes my first six books for one low price, helping you jumpstart a new career in iOS development – check it out!

Click here to visit the Hacking with Swift store >>