我正试图将一个UIView加载到具有半透明背景的SceneKit中,但是当我减少不透明度时它只会淡化为白色.
我在.xib文件中有一个非常简单的UIView布局,我想加载到SceneKit中.
到目前为止,我可以在SCNMaterial中显示UIView,在视图中更改任何文本字段,图像等没有问题.但是我不能让它具有透明度.如果我更改视图的alpha,它就会变为白色.
我在.xib文件中有一个非常简单的UIView布局,我想加载到SceneKit中.
到目前为止,我可以在SCNMaterial中显示UIView,在视图中更改任何文本字段,图像等没有问题.但是我不能让它具有透明度.如果我更改视图的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,backgroundColor有0.2不透明度以及整个视图,因为这些都是我尝试过的东西,但仍然得到一个白色背景,其中一些视图的元素在白色的顶部非常淡出.还试过blendMode = .alpha找不到区别.
‘self’这里是SCNNode的子类.
有谁知道如何让这个视图的背景淡化为透明,而不是淡化为白色?或者,另一种将视图加载到SceneKit中的方法.
提前致谢!
解决方法
尝试将视图层设置为diffuse.contents而不是视图本身.
newMaterial.diffuse.contents = cardView.layer
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。