2014-04-18 60 views
0

這是我的代碼來改變iphone上的閃光模式。ios 7.1閃光模式不工作

在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; 
} 
+0

http://stackoverflow.com/questions/22457097/ios-7-1-imagepicker-cameraflashmode-not-indicating-flash-state我不工作 – Vins

回答

7

我跑進之前的錯誤

問題是,無論ios 7.1中的真實閃存狀態如何,它總是返回UIImagePickerControllerCameraFlashModeAuto。有趣的是,如果將閃光燈模式設置爲UIImagePickerControllerCameraFlashModeOff,閃光燈將確實熄滅,但如果您詢問該狀態,它仍將是UIImagePickerControllerCameraFlashModeAuto

所以我通過保留我自己的「flashState」來解決我的問題。點擊時,我手動更改自己的狀態,並且永遠不會相信發回的但是UIImagePickerController。當按鈕被點擊

@property (nonatomic) UIImagePickerControllerCameraFlashMode flashMode; 

 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; 
     } 
+0

謝謝偉大的作品! – Vins