如何禁用 ARCoachingOverlayView 的自动激活?

Joh*_*Doe 4 swift arkit realitykit

我正在添加一个ARCoachingOverlayView这样ARView

let coachingOverlayTemp = ARCoachingOverlayView()
coachingOverlayTemp.delegate = self
coachingOverlayTemp.session = self.session
coachingOverlayTemp.goal = .horizontalPlane
coachingOverlayTemp.activatesAutomatically = true
coachingOverlayTemp.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(coachingOverlayTemp)

coachingOverlay = coachingOverlayTemp // I store it to a variable on the class
Run Code Online (Sandbox Code Playgroud)

以后,如果我这样做

coachingOverlay.activatesAutomatically = false
Run Code Online (Sandbox Code Playgroud)

没有影响。coachingOverlay继续正常工作。

如何在需要时立即禁用它?

ARG*_*Geo 5

实例方法setActive(_:animated:)控制辅导是否正在进行。

open func setActive(_ active: Bool, animated: Bool)
Run Code Online (Sandbox Code Playgroud)

苹果文档是这样说的:

如果 的动画属性setActive(_:animated:)为 true,isActiveisHidden当指导叠加层淡出时, 和 为 false。当辅导覆盖层在没有动画的情况下停用时,或者当动画完成时,ARKit 会通过调用 来通知您coachingOverlayViewDidDeactivate(_:)

// SMOOTHLY
ARCoachingOverlayView().setActive(false, animated: false)
Run Code Online (Sandbox Code Playgroud)

或者作为替代,您可以使用isHidden属性:

// ABRUPTLY
ARCoachingOverlayView().isHidden = true
Run Code Online (Sandbox Code Playgroud)