gpt4 book ai didi

iphone - iOS 7 UIImagePickerController 有黑色预览

转载 作者:行者123 更新时间:2023-12-03 18:19:14 24 4
gpt4 key购买 nike

我有一个使用 sourceType 相机调用的 UIImagePickerController,80% 的时间我得到黑色预览。如果我等待,假设大约 30 秒,我会得到一个很好的预览,并且在大约 50% 的时间内它会很好,然后它可能会再次中断。

所讨论的图像与此非常相似。 iDevice camera shows black instead of preview

其他人暗示 GCD 可能会导致相机出现一些问题,并且在加载图像选择器时更新 UI 会破坏它。为此,我在每个调用主线程的 GCD block 上加了一个锁。

这是一个通过旋转来模拟事件指示器的图像示例。

-(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:对尚未渲染的 View 进行快照会导致空快照。确保您的 View 在快照之前或屏幕更新后的快照之前至少已渲染一次。

当我尝试打开选择器 Controller 时,它总是显示,但即​​使相机正确显示预览,它也会显示它。我不认为错误就在这里,但这也让我很烦恼。

最佳答案

在我最近的一个项目中,我遇到了相同(或类似)的问题,即在 iOS7 (iPad) 上使用 UIImagePickerController 时相机预览显示黑屏。

我发现 GCD 本身并不是问题。当您尝试在主线程以外的线程中使用 UIKit 框架中的任何内容(作为 NSOperation 的一部分)时,就会出现问题。

首先,我首先要说的是,我很清楚你一开始就不应该这样做。然而,就我的具体情况而言,我别无选择。由于我认为其他人很可能会因同样的原因而经历同样奇怪的 UIImagePickerController 相机行为,因此我编写了一些非常简单的示例代码来解释发生的情况。

您可以在这里找到它:https://github.com/idamediafoundry/CameraTest

ViewController 显示 2 个简单的按钮。一个调用 UIImagePickerController,显示相机,另一个启动一些 GCD 操作来执行一项简单的任务。如果你只是打开相机,一切正常。如果先开始操作,再打开相机,会出现预览黑屏的问题。

再次强调,除了主线程之外,您不应该在任何其他地方调用 UIKit。但我认为,违反此规则会导致相机在稍后作为完全不同流程的一部分在主线程中打开时出现故障,这并不正常,对吗?

希望这有帮助。

关于iphone - iOS 7 UIImagePickerController 有黑色预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19081701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com