我有一个 UIImagePickerController 被 sourceType 相机调用,并且 80% 的时间我得到一个黑色预览。如果我等待,比如说大约 30 秒,我会得到一个很好的预览,大约 50% 的时间会很好,然后它会再次中断。
有问题的图像与此非常相似。iDevice 相机显示黑色而不是预览
其他人暗示 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];
}
PS:对尚未渲染的视图进行快照会导致快照为空。确保在快照或屏幕更新后的快照之前至少渲染一次视图。
当我尝试打开选择器控制器时,这总是显示,但即使相机正确显示预览,它也会显示它。我不认为错误就在这里,但这也让我很烦恼。