sourceType カメラで呼び出される UIImagePickerController があり、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: レンダリングされていないビューのスナップショットを作成すると、空のスナップショットが作成されます。スナップショットを作成する前、または画面の更新後にスナップショットを作成する前に、ビューが少なくとも 1 回レンダリングされていることを確認してください。
これは、ピッカー コントローラーを開こうとすると常に表示されますが、カメラがプレビューを正しく表示している場合でも表示されます。エラーがここにあるとは思いませんが、これも私を悩ませています。