2016-11-04 7 views
1

이 유형의 질문은 이미 확인되었지만 비트 세부로 디버깅했습니다.이 플래그를 전환하면이 시점에 왔습니다.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 

감사

답변

3

나는 서투른 해킹 내 문제를 해결했습니다. 그것은 일했습니다!

+0

작동합니다! 왜 그래? – Zaraki

+0

Zaraki 그것은 iOS 버전의 결함입니다, 나는 그들이 사과에 대해서도보고 한 다가오는 업데이트에서 확실히 이해할 수 있기를 바랍니다. 그리고 나는 그것이 작동하지 않지만 왜 델리게이트를 촉발시키는 해킹인지 모르겠습니다. . – Steve