【发布时间】:2013-09-29 18:29:25
【问题描述】:
我有一个 UIImagePickerController 被 sourceType 相机调用,并且 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];
}
PS:对尚未渲染的视图进行快照会导致快照为空。确保您的视图在快照之前或屏幕更新后的快照之前至少渲染过一次。
当我尝试打开选择器控制器时,它总是显示,但即使相机正确显示预览,它也会显示它。我不认为错误就在这里,但这也让我很烦恼。
【问题讨论】:
-
你弄明白了吗?
-
不,最后我确实有一些猜测,也许这个项目是以前的 iOS6 然后 iOS7 有一些麻烦,但如果我想我似乎无法重现这个问题......解决的关键这是使用 AVFoundation 实现自己的相机
-
我提交了错误报告。我会及时向大家发布。 AVFoundation 向我显示了相同的结果。
-
如果预览适用于某些设备,但不适用于其他设备 - 请注意来自 digitalHound 的 this answer,它拯救了我的一天!
标签: iphone uiimagepickercontroller ios7