iOS 10 相机闪光灯 ON/OFF 不工作
iOS 10 Camera flash ON/OFF not working
最多 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];
有报道称第 3 方更换部件会导致这些症状,尤其是关于 phone needing to cool down and the camera / flash not working 的消息。
phone 上的固件也可能会检查内置部件是否为正品,如果检测到非 Apple 硬件,这也可能导致这些问题。
这是 iOS 10(至少从 10.0.2 开始)的错误。请注意,如果 showsCameraControls
已打开,设置 cameraFlashMode
会 起作用。
这是一个 iOS 10 错误,因此您需要继承 UIImagePickerController 并覆盖 cameraFlashMode setter:
- (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;
}
}
对于iOS10,先尝试渲染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];
}
}];
希望这对您有所帮助。
问题已在 iOS 10.2 上解决。
现在手动相机闪光模式处理再次正常工作,无需启用和禁用 showsCameraControls。
最多 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];
有报道称第 3 方更换部件会导致这些症状,尤其是关于 phone needing to cool down and the camera / flash not working 的消息。 phone 上的固件也可能会检查内置部件是否为正品,如果检测到非 Apple 硬件,这也可能导致这些问题。
这是 iOS 10(至少从 10.0.2 开始)的错误。请注意,如果 showsCameraControls
已打开,设置 cameraFlashMode
会 起作用。
这是一个 iOS 10 错误,因此您需要继承 UIImagePickerController 并覆盖 cameraFlashMode setter:
- (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;
}
}
对于iOS10,先尝试渲染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];
}
}];
希望这对您有所帮助。
问题已在 iOS 10.2 上解决。 现在手动相机闪光模式处理再次正常工作,无需启用和禁用 showsCameraControls。