import UIKit
import ARKit
import PlaygroundSupport
import SceneKit
import CoreMotion
class MyViewController: UIViewController {
let motionManager = CMMotionManager()
var timer: Timer!
var label = UILabel(frame: CGRect(x: 50, y: 400, width: 400, height: 100))
override func loadView() {
let view = UIView()
view.addSubview(label)
label.text = "Show Yaw Here"
self.view = view
view.backgroundColor = .white
motionManager.startAccelerometerUpdates()
motionManager.startGyroUpdates()
motionManager.startMagnetometerUpdates()
motionManager.startDeviceMotionUpdates()
timer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(MyViewController.update), userInfo: nil, repeats: true)
}
@objc func update() {
self.label.text = "Obama"
if let accelerometerData = motionManager.accelerometerData {
print("Device Accelerometer: \(accelerometerData)")
}
if let gyroData = motionManager.gyroData {
print("Device Gyro: \(gyroData)")
}
if let magnetometerData = motionManager.magnetometerData {
print("Device Magnetometer: \(magnetometerData)")
}
if let deviceMotion = motionManager.deviceMotion {
print("Device Motion: \(deviceMotion)")
let yaw = (Int)(Double(floor(1000*deviceMotion.attitude.yaw)/1000) * 180.0/Double.pi)
self.label.text = "Yaw: \(yaw) Degrees"
}
}
}
PlaygroundPage.current.liveView = MyViewController()
Это (выше) код, который я использую в качестве игровой площадки.Я получил код непосредственно из приложения iOS, и он отлично работает, когда я запускаю приложение iOS на том же устройстве, которое представляет собой iPad с раннего 2018 года, работающий под iOS 12. Это код, который я использовал для реального приложения, которое отлично работает наIPAD.Все, что он делает, это записывает значение Yaw в градусах в текстовое поле.Я не получаю ошибок или предупреждений, когда запускаю одну из них.Контроллер вида действительно появляется на детской площадке, так же, как и исходный текст метки, но код не обновляет движение устройства при перемещении iPad, в то время как он обновляется в версии приложения.
import UIKit
import CoreMotion
class ViewController: UIViewController {
let motionManager = CMMotionManager()
var timer: Timer!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
label.text = "ayy lmao"
motionManager.startAccelerometerUpdates()
motionManager.startGyroUpdates()
motionManager.startMagnetometerUpdates()
motionManager.startDeviceMotionUpdates()
timer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true)
}
@objc func update() {
if let accelerometerData = motionManager.accelerometerData {
print("Device Accelerometer: \(accelerometerData)")
}
if let gyroData = motionManager.gyroData {
print("Device Gyro: \(gyroData)")
}
if let magnetometerData = motionManager.magnetometerData {
print("Device Magnetometer: \(magnetometerData)")
}
if let deviceMotion = motionManager.deviceMotion {
print("Device Motion: \(deviceMotion)")
let yaw = (Int)(deviceMotion.attitude.yaw * 180.0/Double.pi)
self.label.text = "Yaw: \(yaw) Degrees"
}
}
}