1

I am attempting to force the flash to be on for an imagePicker but when I run the following code, it defaults to off. Does anything else need to be done to force the flash on in Swift 3?

  let imagePicker = UIImagePickerController()
  imagePicker.delegate = self
  imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
  imagePicker.allowsEditing = false
  imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.on
  imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.rear;
  self.present(imagePicker, animated: true, completion: nil)

A previous question was asked here for an older version of Swift: Camera Flash Turn Auto/On/Off with UIImagePickerController in IOS - Swift

But, there appears to be some subtleties that I am missing to get it to work in Swift 3.

Community
  • 1
  • 1
dr_pepper
  • 1,587
  • 13
  • 28
  • image must be take by UIImagePickerController ? if not did you try to use AVCapturePhotoOutput ? As sample : http://qiita.com/tfutada/items/3e415cbe176d6f801b1d (written in japanese – Nhat Dinh Oct 18 '16 at 04:00
  • Would prefer UIImagePickerController as it provides all that I need and is simple to operate. – dr_pepper Oct 19 '16 at 01:41

1 Answers1

0

Set the camera flash mode in a completion closure as follows:

  self.present(imagePicker, animated: true)
  {
      imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.on
  }

The full source is as follows:

  let imagePicker = UIImagePickerController()
  imagePicker.delegate = self
  imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
  imagePicker.allowsEditing = false
  imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.rear;

  self.present(imagePicker, animated: true)
  {
      imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.on
  }

Verified that this works with Swift 3, but not sure if it helps for older versions.

dr_pepper
  • 1,587
  • 13
  • 28