【发布时间】:2020-10-04 20:31:18
【问题描述】:
我有一个 ARView,它将在 coachingOverlay 成功完成后立即填充。
如何调用函数从另一个视图 (Navbar) 重置此 ARView 并运行 coachingOverlay 再次初始化 AR?
struct ContentView : View {
var body: some View {
ZStack {
ARViewContainer().edgesIgnoringSafeArea(.all)
VStack {
Spacer()
Navbar()
}
.padding()
}
}
}
struct ARViewContainer: UIViewRepresentable {
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
arView.addCoaching()
let config = ARWorldTrackingConfiguration()
config.planeDetection = .horizontal
arView.session.run(config, options: [])
return arView
}
func updateUIView(_ uiView: ARView, context: Context) {}
}
extension ARView: ARCoachingOverlayViewDelegate {
func addCoaching() {
let coachingOverlay = ARCoachingOverlayView()
coachingOverlay.delegate = self
coachingOverlay.session = self.session
coachingOverlay.autoresizingMask = [.flexibleWidth, .flexibleHeight]
coachingOverlay.goal = .anyPlane
self.addSubview(coachingOverlay)
}
public func coachingOverlayViewDidDeactivate(_ coachingOverlayView: ARCoachingOverlayView) {
// Load the "Box" scene from the "Experience" Reality File
let boxAnchor = try! Experience.loadBox()
// Add the box anchor to the scene
self.scene.anchors.append(boxAnchor)
}
}
struct Navbar: View {
let arView = ARView()
var body: some View {
Button(action: {
//
}) {
Image(systemName: "trash")
.foregroundColor(Color.black)
.padding()
}
.background(Color.white)
}
}
【问题讨论】:
标签: ios swift swiftui augmented-reality arkit