gpt4 book ai didi

ios - 获取当前的 iOS 设备方向,即使设备的方向已锁定

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:06 26 4
gpt4 key购买 nike

即使设备的方向已锁定,我也想获取当前的 iOS 设备方向。 (就像 iOS 相机应用程序一样)

我想至少检测 Portrait、Landscape Left 和 Landscape Right。

当方向锁定时,UIDeviceOrientation 和 UIInterfaceOrientation 似乎不起作用。

在这种情况下,我认为我们将使用 CoreMotion。

我如何在 swift4 中对其进行逻辑处理?

最佳答案

用核心运动声明运动管理器

    var orientationLast = UIInterfaceOrientation(rawValue: 0)!
var motionManager: CMMotionManager?

运动管理器初始化

并在viewDidLoad中调用这个函数

    func initializeMotionManager() {
motionManager = CMMotionManager()
motionManager?.accelerometerUpdateInterval = 0.2
motionManager?.gyroUpdateInterval = 0.2
motionManager?.startAccelerometerUpdates(to: (OperationQueue.current)!, withHandler: {
(accelerometerData, error) -> Void in
if error == nil {
self.outputAccelertionData((accelerometerData?.acceleration)!)
}
else {
print("\(error!)")
}
})
}

分析加速度计计量数据

 func outputAccelertionData(_ acceleration: CMAcceleration) {
var orientationNew: UIInterfaceOrientation
if acceleration.x >= 0.75 {
orientationNew = .landscapeLeft
print("landscapeLeft")
}
else if acceleration.x <= -0.75 {
orientationNew = .landscapeRight
print("landscapeRight")
}
else if acceleration.y <= -0.75 {
orientationNew = .portrait
print("portrait")

}
else if acceleration.y >= 0.75 {
orientationNew = .portraitUpsideDown
print("portraitUpsideDown")
}
else {
// Consider same as last time
return
}

if orientationNew == orientationLast {
return
}
orientationLast = orientationNew
}

关于ios - 获取当前的 iOS 设备方向,即使设备的方向已锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49164302/

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