gpt4 book ai didi

swift - 将具有透明度的 UIView(来自 xib)添加到 SceneKit

转载 作者:搜寻专家 更新时间:2023-10-30 22:17:11 26 4
gpt4 key购买 nike

我正在尝试将一个 UIView 加载到具有半透明背景的 SceneKit 中,但目前,它只是随着我降低不透明度而逐渐变成白色。我在 .xib 文件中有一个非常简单的 UIView 布局,我想将其加载到 SceneKit 中。到目前为止,我可以在 SCNMaterial 中显示 UIView,毫无问题地更改 View 内的任何文本字段、图像等。但是,我不能让它有透明度。如果我更改 View 的 alpha,它只会淡化为白色。

大部分代码如下:

if let cardView = Bundle.main.loadNibNamed("OverlayCard", owner: self, options: nil)?.first as? OverlayCard {
cardView.backgroundColor = UIColor(displayP3Red: 1.0, green: 0.4, blue: 0.9, alpha: 0.2)
let newplane = SCNPlane()
let newMaterial = SCNMaterial()
cardView.alpha = 0.2
cardView.isOpaque = false
newMaterial.diffuse.contents = cardView
newMaterial.blendMode = .add
newplane.materials = [newMaterial]
let viewNode = SCNNode(geometry: newplane)
self.addChildNode(viewNode)
}

我留下了各种东西,比如分配 blendMode、0.2 不透明度的 backgroundColor 以及整个 View ,因为这些都是我尝试过的东西,但仍然得到一个白色背景,其中一些 View 元素位于白色非常褪色。也尝试过 blendMode = .alpha 发现没有区别。这里的 'self' 是 SCNNode 的子类。

有谁知道如何让这个 View 的背景淡化为透明,而不是淡化为白色?或者,另一种将 View 加载到 SceneKit 的方法。

最佳答案

尝试将 View 层设置为 diffuse.contents 而不是 View 本身。

newMaterial.diffuse.contents = cardView.layer

关于swift - 将具有透明度的 UIView(来自 xib)添加到 SceneKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47421392/

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