이 유형의 질문은 이미 확인되었지만 비트 세부로 디버깅했습니다.이 플래그를 전환하면이 시점에 왔습니다.UIImagePickerController 사용자 정의 FlashMode 버튼이 IOS 10 (빠른)에서 작동하지 않습니다
self.picker.showsCameraControls = false
다음 사용자 정의 플래시 버튼이 응답하지 않지만 그때
self.picker.showsCameraControls = true
에 플래그를 변경할 수 있을지 응답 내 사용자 정의 플래시 버튼 OK, 나는 모든 대의원 및 플래그를 확인해야하지만 난 아니다 버그를 지적 할 수있는, 그것이 내 코드에 있거나 IOS 10 버전에있다면, 그것의 i 그러면 내 사용자 정의 플래시 버튼이 플래시의 상태를 변경하고 정상적으로 작동하는 이유를 카메라 컨트롤에 표시하는 코드가 생깁니다. 내 사용자 지정 flashmode 버튼을 cameraoverlayview에 작동하지 않습니다 한마디로
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()
}
}
: 여기에 더 나은 이해를 위해 내 코드입니다. 이 문제에 대한 해결책이 없다면 해킹을 제안하십시오. 표시 및 숨기기 컨트롤로 사용자를 방해하지 충분히 빠른
self.picker.showsCameraControls = true
self.picker.cameraFlashMode = .On
self.picker.showsCameraControls = false
감사
작동합니다! 왜 그래? – Zaraki
Zaraki 그것은 iOS 버전의 결함입니다, 나는 그들이 사과에 대해서도보고 한 다가오는 업데이트에서 확실히 이해할 수 있기를 바랍니다. 그리고 나는 그것이 작동하지 않지만 왜 델리게이트를 촉발시키는 해킹인지 모르겠습니다. . – Steve