背景:在开发的APP中调用系统相机拍照(UIImagePickerController),iOS8、iOS9上能正常拍照,iOS10以后拍照后出现黑屏,发现拍照图片其实存在的。
解决思路:在自己的测试机上对比了两款APP的iOS9和iOS10系统拍照的显示,一个是种子习惯,一个是QQ。结果如下:
很明显图2上拍照界面顶部状态栏显示了,并且和闪光灯图标交叉了,这么明显的样式问题为什么会同时发生在QQ还有其他APP上。这引起了我的注意,就这样我在代码中加入如下方法:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ([UIDevice currentDevice].systemVersion.floatValue < 10.0) return;
if ([navigationController isKindOfClass:[UIImagePickerController class]] &&
((UIImagePickerController *)navigationController).sourceType == UIImagePickerControllerSourceTypeCamera) {
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];
}
}
目的是在iOS10上显示拍照页的状态栏,iOS9上不显示状态栏,发现iOS10拍照黑屏问题解决。
这种问题经推测是苹果的bug,显示状态栏成了市场上APP不出现黑屏的临时解决办法。