3

iOS 9 まではフラッシュのオン/オフ/自動で正常に動作します。しかし、iOS 10 ではフラッシュが機能しません。

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

5 に答える 5

2

これは iOS 10 のバグです (少なくとも 10.0.2 以降)。がオンになっている場合、設定cameraFlashMode は機能しないことに注意してください。showsCameraControls

于 2016-10-19T16:41:21.180 に答える
2

iOS 10.2で解決された問題。これで、showCameraControls を有効または無効にする必要なく、手動カメラ フラッシュ モードの処理が再び正常に機能するようになりました。

于 2016-12-14T09:26:28.983 に答える
1

これは iOS 10 のバグであるため、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;
     }
 }
于 2016-10-24T12:28:28.907 に答える