在我的基于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];
}
为什么第一次看不到相机图层的想法?
答案 0 :(得分:1)
解决了问题问题是,在NO
完成后,将webview的不透明度标志设置为startCamera()
没有任何效果。为了解决这个问题,我先设置了webview的不透明度 - 就在它创建时。没有不透明度的webview并不意味着它是透明的 - 您还需要将背景颜色设置为[UIColor clearColor]
(这是startCamera()
中所做的;在stopCamera()
背景中颜色设置回[UIColor blackColor]
)。