2017-01-17 19 views
0

Недавно я разрабатываю QR-код распознавания на iPhone. Я использую AVFoundation framework. Я использую AVCaptureSession для подключения к AVCaptureDeviceInput и AVCaptureMetadataOutput и использовать AVCaptureVideoPreviewLayer для отображения. Проблема в том, что когда AVCaptureSession startRunning, AVCaptureVideoPreviewLayer сначала становится черным и постепенно возвращается в нормальное состояние. Проблема - плохой опыт пользователей. Теперь я использую GCD dispatch_after() для решения этой проблемы временно. Я знаю, есть ли другие решения. Поскольку метод startRunning AVCaptureSession отнимает много времени, я вызываю 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

ТНХ для ответа, я обновил вопрос. –