fel*_*ode 5 xcode swift scnscene sceneview swiftui
有谁知道如何清除 SceneView 3D 对象的背景?我正在尝试使用 UIColor.clear,但它使它变成白色。[
]
import SwiftUI
import SceneKit
struct TestView: View {
var body: some View {
ZStack{
Color.green
SceneView(
scene: {
let scene = SCNScene(named: "Earth.scn")!
scene.background.contents = UIColor.clear
return scene
}(),
options: [.autoenablesDefaultLighting,.allowsCameraControl]
)
.frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height/2, alignment: .center)
}
}
}
struct TestView_Previews: PreviewProvider {
static var previews: some View {
TestView()
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个对我有用的解决方案,主要是从这里的答案中采用的:
import SceneKit
import SwiftUI
final class EarthSceneView: UIViewRepresentable {
typealias UIViewType = SCNView
typealias Context = UIViewRepresentableContext<EarthSceneView>
func updateUIView(_ uiView: UIViewType, context: Context) {}
func makeUIView(context: Context) -> UIViewType {
let view = SCNView()
view.backgroundColor = UIColor.clear // this is key!
view.allowsCameraControl = true
view.autoenablesDefaultLighting = true
// load the scene here, could load an .obj file too
view.scene = SCNScene(named: "Earth.scn")!
return view
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以在你的视图中使用它:
import SwiftUI
struct TestView: View {
var body: some View {
ZStack{
Color.green
EarthSceneView()
.frame( // set frame as required
maxWidth: .infinity,
maxHeight: .infinity,
alignment: .center
)
}
}
}
struct TestView_Previews: PreviewProvider {
static var previews: some View {
TestView()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |