UIImagePickerController自定义FlashModebutton不工作在IOS 10(迅速)

我知道这个types的问题已经被问到了,但是我仔细地debugging了一下,我发现当我把这个标志关掉的时候

self.picker.showsCameraControls = false 

那么自定义Flashbutton不会响应,但是如果我将标志更改为

  self.picker.showsCameraControls = true 

然后我的自定义闪光灯button响应OK,我已经检查所有代表和标志,但我无法指出错误,无论是在我的代码或它是在IOS 10版本,如果它在我的代码,然后显示相机控制为什么我的自定义闪光灯button更改闪光灯的状态并正常工作 这里是我的代码更好的理解:

  func configureImagePicker(){ self.picker.delegate = self self.picker.allowsEditing = false if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) { self.picker.sourceType = UIImagePickerControllerSourceType.Camera self.picker.mediaTypes = [kUTTypeImage as String] } } func showImagePicker(){ if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){ self.picker.sourceType = UIImagePickerControllerSourceType.Camera self.picker.showsCameraControls = false self.picker.delegateController = self self.picker.delegate = self self.picker.mediaTypes = [kUTTypeImage as String] self.picker.allowsEditing = false if let cameraOverlay = self.picker.cameraOverlayView { self.createCamerOverlay(cameraOverlay.frame) self.picker.cameraOverlayView = self.overlayView self.presentViewController(self.picker, animated: false, completion: { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(Double(0.5)*Double(NSEC_PER_SEC))), dispatch_get_main_queue(), { if self.picker.cameraDevice == UIImagePickerControllerCameraDevice.Rear && UIImagePickerController.isFlashAvailableForCameraDevice(UIImagePickerControllerCameraDevice.Rear) { if Float.init(UIDevice.currentDevice().systemVersion) < 11.0 { switch(Global.shared.currenFlashOption) { case .FlashOff: self.picker.cameraFlashMode = .Off let flashImage = UIImage(named: "btn-flash-off") self.flashButton.setImage(flashImage, forState: UIControlState.Normal) self.flashButton.setImage(flashImage, forState: UIControlState.Highlighted) case .FlashAuto: self.picker.cameraFlashMode = .Auto let flashImage = UIImage(named: "btn-flash") self.flashButton.setImage(flashImage, forState: UIControlState.Normal) self.flashButton.setImage(flashImage, forState: UIControlState.Highlighted) case .FlashOn: self.picker.cameraFlashMode = .On let flashImage = UIImage(named: "btn-flash-on") self.flashButton.setImage(flashImage, forState: UIControlState.Normal) self.flashButton.setImage(flashImage, forState: UIControlState.Highlighted) } } else { self.picker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.On } } }); }); } else { print("Camera overlay frame not found. So did not present the controller.") } } else{ let alert = UIAlertView(title: "Error", message: "Camera Not Available", delegate: nil, cancelButtonTitle: "Cancel") alert.show() } } 

简而言之,我的自定义flashmodebutton不适用于cameraoverlayview。 如果没有解决这个问题,那么请build议任何破解。 谢谢

我用一个笨拙的黑客解决了我的问题,

  self.picker.showsCameraControls = true self.picker.cameraFlashMode = .On self.picker.showsCameraControls = false 

显示和隐藏控制不会干扰用户的速度。 有效!