6

UIView を半透明の背景で SceneKit にロードしようとしていますが、現在、不透明度を下げると白にフェードアウトします。SceneKit にロードしたい .xib ファイルに非常に単純な UIView レイアウトがあります。これまでのところ、UIView を SCNMaterial に表示したり、ビュー内のテキスト フィールドや画像などを問題なく変更したりできます。しかし、透明にすることはできません。ビューのアルファを変更すると、白にフェードします。

ほとんどのコードは次のとおりです。

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 opacity に割り当てるなど、さまざまなことを残しました。これらはすべて私が試したことですが、ビューの要素の一部が非常に色あせた白の上に白い背景が表示されるためです。アウト。また、blendMode = .alpha を試して違いを見つけませんでした。ここでの「self」は SCNNode のサブクラスです。

このビューの背景を白くするのではなく、透明にする方法を知っている人はいますか? または、ビューを SceneKit に読み込む別の方法。

4

1 に答える 1

1

ビュー自体ではなく、ビューのレイヤーをdiffuse.contentsとして設定してみてください。

newMaterial.diffuse.contents = cardView.layer
于 2018-07-31T07:01:29.880 に答える