【发布时间】:2012-01-15 10:19:34
【问题描述】:
在我基于 phonegap 的 iPhone 网络应用程序中,我实现了一个使用 AVCaptureVideoPreviewLayer 拍照的插件。为此,当调用插件的startCamera 方法时,我将webview 的背景设置为透明,并在webview 的图层下方插入视频捕获层。这按预期工作(大部分时间)。
但出于某种奇怪的原因,当我第一次执行startCamera 时(在新的应用程序启动后),视频层不可见。相反,webview 显示白色背景,尽管背景颜色设置为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];
}
任何想法为什么相机层第一次不可见?
【问题讨论】:
-
你的 START CAMERA 方法在哪里?
标签: objective-c ios uiwebview cordova transparency