我有一个UIImagePickerController,使用sourceType camera进行调用,但80%的时间里我得到的是一个黑色预览。如果我等待,比如说大约30秒,我就能得到一个好的预览,它会好50%的时间,然后又可能再次崩溃。
这张图片与iDevice camera shows black instead of preview非常相似。
其他人暗示GCD可能会导致摄像头出现一些问题,并且在图像选择器加载时更新UI会使其崩溃。为此,我在每个调用主线程的GCD块上都放了一个锁。
这是一个旋转以模拟活动指示器的图像示例。
-(void)animateLoadingImage {
if (isMainThreadBlocked) {
return;
}
self.radians += M_PI_4 / 2;
[UIView beginAnimations:@"progress rotation" context:nil];
[UIView setAnimationDuration:.1];
self.loadingImageView.transform = CGAffineTransformMakeRotation(self.radians);
[UIView commitAnimations];
}
注意:对尚未渲染的视图进行快照会导致空快照。在快照之前,请确保您的视图至少已经渲染一次或在屏幕更新后进行快照。
每当我尝试打开选择器控制器时,就会始终显示此消息,但即使相机正确显示预览,它也会显示。我不认为错误在这里,但这让我很困扰。