【问题标题】:iOS 10 Camera flash ON/OFF not workingiOS 10 相机闪光灯开/关不工作
【发布时间】:2016-10-04 08:31:53
【问题描述】:

iOS 9 闪光灯开/关/自动工作正常。但在 iOS 10 中 flash 无法正常工作。

    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];

并以编程方式更改闪存模式。

 [self.camObj setCameraFlashMode:UIImagePickerControllerCameraFlashModeOn];

【问题讨论】:

  • 我也看到了。还没有找到解决方法。只要我将其设置为默认的自动模式,闪光灯就会按预期工作。当我尝试将模式切换到开启时,模式实际上切换到关闭。从这一点开始,它保持关闭,即使我尝试将其切换回自动。
  • 对于遇到此问题的每个人,请提交错误报告以将其置于 Apple 的雷达上(可以这么说)。 bugreport.apple.com
  • 这是在 10.2 beta 1 中修复的。刚刚试了一下。

标签: ios objective-c ios10 camera-flash


【解决方案1】:

在 iOS 10.2 上已解决问题。 现在手动相机闪光灯模式处理再次正常工作,无需启用和禁用showsCameraControls。

【讨论】:

    【解决方案2】:

    这是 iOS 10 的一个错误(至少从 10.0.2 开始)。请注意,如果 showsCameraControls 已打开,设置 cameraFlashMode确实有效。

    【讨论】:

      【解决方案3】:

      这是一个 iOS 10 的 bug,所以你需要继承 UIImagePickerController 并覆盖 cameraFlashMode 设置器:

       - (void)setCameraFlashMode:(UIImagePickerControllerCameraFlashMode)cameraFlashMode {
           if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10 && !self.showsCameraControls) {
               self.showsCameraControls = YES;
               super.cameraFlashMode = cameraFlashMode;
               self.showsCameraControls = NO;
           } else {
               super.cameraFlashMode = cameraFlashMode;
           }
       }
      

      【讨论】:

        【解决方案4】:

        有报道称,第 3 方更换零件可能会导致这些症状,尤其是有关 phone needing to cool down and the camera / flash not working 的消息。 手机上的固件还可能会检查内置部件是否为正品,如果检测到非 Apple 硬件,这也可能导致这些问题。

        【讨论】:

          【解决方案5】:

          对于 iOS 10,尝试先渲染 UIImagePickerController 并再次设置相机闪光灯。试试

          [self presentViewController:self.camObj animated:YES completion:^{
              //For iOS 10 and higher versions so it can set the proper flashmode
              if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10) {
                 [self.camObj setCameraFlashMode:UIImagePickerControllerCameraFlashModeOn];
              }
          }];
          

          希望这会有所帮助。

          【讨论】:

            猜你喜欢
            • 2019-03-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-18
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多