Je sais qu'une question de ce type est déjà posée, mais je l'ai débogué dans le détail des bits, et je suis arrivé à ce point que lorsque j'ai éteint ce drapeauUIImagePickerController bouton FlashMode personnalisé ne fonctionne pas sur IOS 10 (swift)
self.picker.showsCameraControls = false
puis sur le bouton flash personnalisé ne répond pas, mais si je vais changer le drapeau
self.picker.showsCameraControls = true
alors mon bouton flash personnalisé répondant OK, je vérifier tous les délégués et les drapeaux, mais je ne suis pas capable de pointer le bug, soit il est dans mon code ou il est en version IOS 10, si son i n mon code puis sur montrant les commandes de la caméra pourquoi mon bouton flash personnalisé change l'état du flash et fonctionne bien. voici mon code pour une meilleure compréhension:
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()
}
}
En bref mon bouton flashmode personnalisé ne fonctionne pas sur cameraoverlayview. S'il n'y a pas de solution à ce problème, veuillez suggérer un hack. grâce
Ca marche !!! mais pourquoiyyyyyyyyyy? – Zaraki
Zaraki c'est une faille dans la version iOS, j'espère qu'ils vont certainement le comprendre dans les prochaines mises à jour je l'ai signalé à Apple aussi, et je ne comprends pas pourquoi il ne fonctionne pas mais c'est un hack pour déclencher le délégué .. . – Steve