gpt4 book ai didi

objective-c - 透明网页 View : underlying layer sometimes not visible

转载 作者:行者123 更新时间:2023-11-29 13:43:22 25 4
gpt4 key购买 nike

在我基于 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];
}

为什么相机层第一次不可见有什么想法吗?

最佳答案

解决了: 问题是,将 webview 的不透明度标志设置为 NOstartCamera() 中完成时没有任何效果.为了解决这个问题,我之前设置了 webview 的不透明度——就在它创建的时候。没有不透明度的 webview 并不意味着它是透明的 - 您还需要将背景颜色设置为 [UIColor clearColor] (这是在 startCamera() 中所做的;在 stopCamera() 中,背景颜色设置回 [UIColor blackColor])。

关于objective-c - 透明网页 View : underlying layer sometimes not visible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8423209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com