私のphonegapベースのiPhone web-appでは、AVCaptureVideoPreviewLayer
を使って写真を撮るプラグインを実装しました。これを行うには、プラグインのstartCamera
メソッドが呼び出されたときに、Webビューの背景を透明に設定し、ビデオキャプチャレイヤーをWebビューのレイヤーの下に挿入します。これは期待通りに機能します(ほとんどの場合)。透明なwebview:下層が表示されない場合があります
しかし、奇妙な理由で初めてstartCamera
を実行すると(新しいアプリの開始後に)、ビデオレイヤーは表示されません。代わりに、背景色はclearColor
に設定されていますが、webviewは白い背景を表示します。後続のすべての実行では、ビデオレイヤーが表示されます。
これは私がカメラを表示するためにやっているものです:
stopCamera()
で
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];
私は次のようにします。
if (session) {
[session stopRunning];
}
[self.webView setBackgroundColor:[UIColor blackColor]];
[self.webView setOpaque:NO];
if (videoLayer != nil) {
[videoLayer removeFromSuperlayer];
}
カメラ層は、第1のために表示されていない理由を任意のアイデアは、時間?
あなたのSTART CAMERAメソッドはどこですか? –