2017-01-17 6 views
0

最近、私はiPhoneでQRコード認識を開発しています。私はAVFoundationフレームワークを使用します。 AVCaptureDeviceInputとAVCaptureMetadataOutputに接続し、AVCaptureVideoPreviewLayerを使用して表示するには、AVCaptureSessionを使用します。 問題は、AVCaptureSession startRunning、AVCaptureVideoPreviewLayerが最初に黒になり、徐々に正常に戻ります。問題はユーザーエクスペリエンスが悪いです。今私はこの問題を一時的に解決するためにGCDのdispatch_after()を使います。私は他の解決策があることを知っています。 AVCaptureSessionのstartRunningメソッドは時間がかかるため、バックグラウンドスレッドでstartRunning()を呼び出します。私は、AVCaptureSessionが開始するのをユーザーが待つようにするために、読み込みビューを使用します。私は "AVCaptureSessionDidStartRunningNotification"通知を観察します。しかし、通知がAVCaptureVideoPreviewLayerをまだ黒にしていて、徐々に正常に戻ったとき。AVCaptureSession startRunningはAVCaptureVideoPreviewLayerを最初に黒にします

dispatch_async(self.sessionQueue, ^{ 
      [_avSession startRunning]; 
      CGRect rectOfInterest = [_previewLayer metadataOutputRectOfInterestForRect:_config.rectOfInterest]; 
      _metadataOutput.rectOfInterest = rectOfInterest; 
     } 
    } 
}); 

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(avSessionDidStartRunning) name:AVCaptureSessionDidStartRunningNotification object:nil]; 

答えて

0

あなたはそれほど問題がどこにあるか私が言うことはできますが、このリンクを使用することができQRコードRecoginitionを実装する方法のいくつかのコードを投稿場合、それは良くなります。それは私を助けた。

https://www.appcoda.com/qr-code-ios-programming-tutorial/

+0

thxについては、私は質問を更新しました。 –

関連する問題