Up to iOS 9 flash on / off / auto working fine. But in iOS 10 flash is not working.
self.camObj = [[UIImagePickerController alloc] init];
[self addCameraToTheScreen];
NSArray *mediaTypes = [NSArray arrayWithObject:(NSString*)kUTTypeMovie];
self.camObj.mediaTypes = mediaTypes ;
self.camObj.modalTransitionStyle = UIModalPresentationFullScreen;
self.camObj.sourceType = UIImagePickerControllerSourceTypeCamera;
self.camObj.videoMaximumDuration = 10.0f;
self.camObj.showsCameraControls = NO;
self.camOptionsView.frame = [UIScreen mainScreen].bounds;
self.camObj.delegate = (id<UIImagePickerControllerDelegate,UINavigationControllerDelegate>)self;
[self.camObj setCameraOverlayView:self.camOptionsView];
and programmatically changing flash mode.
[self.camObj setCameraFlashMode:UIImagePickerControllerCameraFlashModeOn];
Issue solved on iOS 10.2 . Now manual camera flash mode handling works fine again, without need of enabling and disabling showsCameraControls.