如何禁用ARCoachingOverlayView的自动激活?

人气:1,234 发布:2022-09-10 标签: 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

以后,如果我这样做

coachingOverlay.activatesAutomatically = false

无效。coachingOverlay继续正常工作。

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

推荐答案

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

open func setActive(_ active: Bool, animated: Bool)

这是Apple documentation所说的:

如果setActive(_:animated:)的动画属性为真,则在训练覆盖淡出时isActiveisHidden为假。当在没有动画的情况下停用指导覆盖时,或者当动画结束时,ARKit通过调用coachingOverlayViewDidDeactivate(_:)来通知您。

// SMOOTHLY
ARCoachingOverlayView().setActive(false, animated: false)

或者您可以使用isHiddenProperty:

// ABRUPTLY
ARCoachingOverlayView().isHidden = true

132