ARKit中的垂直位置检测不是很好,因此我正在使用接近传感器放置找到的垂直平面。 UX如下:
我当前面临的问题是,当触发前传感器时,一切都停止了。用于ARSCNViewDelegate调用的所有CoreMotion传感器和渲染方法都将停止。这将导致世界原点从其原点移动,并使放置的物品也随之移动。
是否有一种无需关闭所有设备即可获取接近传感器数据的方法?有没有更好的放置垂直物品的方法?
答案 0 :(得分:0)
异步功能使您几乎可以同时执行两个或多个任务,而不必等到分派的块执行完毕。
因此,您必须使用如下方法:
class ViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
DispatchQueue.main.async {
self.proximitySensorActivation()
}
}
func proximitySensorActivation() {
let device = UIDevice.current
device.isProximityMonitoringEnabled = true
if device.isProximityMonitoringEnabled {
NotificationCenter.default.addObserver(self,
selector: #selector(proximityChanged),
name: UIDevice.proximityStateDidChangeNotification,
object: device)
}
}
@objc func proximityChanged(notification: NSNotification) {
if let device = notification.object as? UIDevice {
print(device)
}
}
}