gpt4 book ai didi

SWIFTUI 和 Core Motion

转载 作者:行者123 更新时间:2023-12-05 03:52:50 25 4
gpt4 key购买 nike

我正在尝试在 SWIFTUI View 中显示加速度计数据。这段代码可以打印到控制台,但我不明白如何将它放入 View 中,以便我可以在 SWIFTUI 中使用它。

import SwiftUI
import CoreMotion


struct AccelerometerView: View {

let motionManager = CMMotionManager()
let queue = OperationQueue()


var body: some View {

VStack{
Text("accelerate:").onAppear {
print("ON APPEAR")
self.motionManager.startDeviceMotionUpdates(to: self.queue) { (data: CMDeviceMotion?, error: Error?) in
guard let data = data else {
print("Error: \(error!)")
return
}
let attitude: CMAttitude = data.attitude

print("pitch: \(attitude.pitch)")
print("yaw: \(attitude.yaw)")
print("roll: \(attitude.roll)")
}
}//.onappear

//Text("Pitch:\(attitude.pitch)")

}//Vstack

}//view
}//struct

struct AccelerometerView_Previews: PreviewProvider {
static var previews: some View {
AccelerometerView()
}
}

最佳答案

这是可能的解决方案

struct AccelerometerView: View {

let motionManager = CMMotionManager()
let queue = OperationQueue()

@State private var pitch = Double.zero
@State private var yaw = Double.zero
@State private var roll = Double.zero

var body: some View {

VStack{
Text("Pitch: \(pitch)")
Text("Yaw: \(yaw)")
Text("Roll: \(roll)")
}//Vstack
.onAppear {
print("ON APPEAR")
self.motionManager.startDeviceMotionUpdates(to: self.queue) { (data: CMDeviceMotion?, error: Error?) in
guard let data = data else {
print("Error: \(error!)")
return
}
let attitude: CMAttitude = data.attitude

print("pitch: \(attitude.pitch)")
print("yaw: \(attitude.yaw)")
print("roll: \(attitude.roll)")

DispatchQueue.main.async {
self.pitch = attitude.pitch
self.yaw = attitude.yaw
self.roll = attitude.roll
}
}
}//.onappear
}//view
}//struct

关于SWIFTUI 和 Core Motion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62020407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com