ios 7.1闪光模式不起作用

Vin*_*ins 0 uiimagepickercontroller ios

这是我在iphone上更改闪光模式的代码.

在ios7.0中有效:flashmode(0,1,-1)

在ios7.1中不起作用:flashmode(0,0,0)

//UIImagePickerControllerCameraFlashModeOff  = -1,
//UIImagePickerControllerCameraFlashModeAuto = 0,
//UIImagePickerControllerCameraFlashModeOn   = 1

NSInteger flashMode = self.pickerReference.cameraFlashMode;

NSLog(@"flashmode %i",flashMode);

if (flashMode == UIImagePickerControllerCameraFlashModeAuto) {
    [(UIButton *)sender setImage:[UIImage imageNamed:@"flashYesComposeButton.png"] forState:UIControlStateNormal];
    self.pickerReference.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;
}

else if (flashMode == UIImagePickerControllerCameraFlashModeOn) {
    [(UIButton *)sender setImage:[UIImage imageNamed:@"flashNoComposeButton.png"] forState:UIControlStateNormal];
    self.pickerReference.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;
}

else if (flashMode == UIImagePickerControllerCameraFlashModeOff)
{
    [(UIButton *)sender setImage:[UIImage imageNamed:@"flashAutoComposeButton.png"] forState:UIControlStateNormal];
    self.pickerReference.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto;
}
Run Code Online (Sandbox Code Playgroud)

Emi*_*lie 7

我之前遇到过这个bug

问题是无论ios 7.1中的真实闪存状态是什么,它总是返回UIImagePickerControllerCameraFlashModeAuto.有趣的是,如果你设置闪光模式UIImagePickerControllerCameraFlashModeOff,闪光灯将真的关闭,但如果你问状态,它仍然会UIImagePickerControllerCameraFlashModeAuto.

所以我通过保持自己的"flashState"解决了我的问题.单击时,我手动更改自己的状态,并且永远不会信任发回的但是UIImagePickerController.

@property (nonatomic) UIImagePickerControllerCameraFlashMode flashMode;
Run Code Online (Sandbox Code Playgroud)

单击按钮时:

       if (self.flashMode == UIImagePickerControllerCameraFlashModeAuto) {  
            //toggle your button to "on"
            self.flashMode = UIImagePickerControllerCameraFlashModeOn;
        }else if (self.flashMode == UIImagePickerControllerCameraFlashModeOn){  
            //toggle your button to "Off"
            self.flashMode = UIImagePickerControllerCameraFlashModeOff;
        }else if (self.flashMode == UIImagePickerControllerCameraFlashModeOff){ 
            //toggle your button to "Auto"
            self.flashMode = UIImagePickerControllerCameraFlashModeAuto;
        }
Run Code Online (Sandbox Code Playgroud)