В моем веб-приложении для iPhone на основе телефонной щели я реализовал плагин, который использует AVCaptureVideoPreviewLayer
для фотографирования. Для этого, когда вызывается метод плагинов startCamera
, я устанавливаю прозрачный фон веб-просмотра и вставляю слой видеозахвата ниже слоя веб-просмотра. Это работает как ожидалось (большую часть времени).
Но по какой-то странной причине, когда я запускаю startCamera
в первый раз (после запуска нового приложения), видеослой не виден. Вместо этого веб-просмотр отображает белый фон, хотя цвет фона установлен на clearColor
. Для всех последующих исполнений, видео слой виден.
Вот что я делаю, чтобы показать камеру:
AVCaptureSession * session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetHigh;
AVCaptureVideoPreviewLayer * videoLayer =
[[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
videoLayer.frame = self.webView.bounds;
CALayer *webViewLayer = self.webView.layer;
[webViewLayer.superlayer insertSublayer:videoLayer below:webViewLayer];
// ... session setup excluded
[session startRunning];
[self.webView setBackgroundColor:[UIColor clearColor]];
[self.webView setOpaque:NO];
В stopCamera()
я делаю следующее:
if (session) {
[session stopRunning];
}
[self.webView setBackgroundColor:[UIColor blackColor]];
[self.webView setOpaque:NO];
if (videoLayer != nil) {
[videoLayer removeFromSuperlayer];
}
Есть идеи, почему слой камеры не виден впервые?