gpt4 book ai didi

ios - 旋转设备时将按钮保持在同一位置

转载 作者:行者123 更新时间:2023-11-30 11:21:03 24 4
gpt4 key购买 nike

我正在尝试创建与 native 相机应用程序相同的效果。

希望在旋转设备时将按钮保持在相同的精确位置并支持所有设备方向。

按钮只能旋转enter image description here

最佳答案

所需要做的就是锁定设备方向,如下所示:

 UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")

和:

  override var shouldAutorotate: Bool {
return false
}

完成此操作 - 使用 CoreMotion 检测手机方向:1.设置设备移动检测:

func startDeviceMotion() {
if motion.isDeviceMotionAvailable {
self.motion.deviceMotionUpdateInterval = 10.0 / 60.0
self.motion.showsDeviceMovementDisplay = true
self.motion.startDeviceMotionUpdates(using: .xMagneticNorthZVertical)

self.timer = Timer(fire: Date(), interval: (10.0/60.0), repeats:
true,block: { (timer) in
self.deviceRotated()
})
RunLoop.current.add(self.timer!, forMode: .defaultRunLoopMode)
}
}
  • handle 旋转:

    func deviceRotated() {                                                    
    if let deviceMotion = motion.deviceMotion {
    let degree = deviceMotion.attitude.roll * 180 / .pi
    print(degree)
    switch degree {
    case -40 ... 40:
    UIApplication.shared.statusBarOrientation = .portrait
    break
    case 50 ... 130:
    UIApplication.shared.statusBarOrientation = .landscapeLeft
    break
    case -130 ... -50:
    UIApplication.shared.statusBarOrientation = .landscapeRight
    break
    default:
    break
    }
    } }
  • 注意:在每个方向上,我更改了设备状态栏方向,但将设备锁定为纵向。由于我使用代码运动来检测设备旋转变化 - 即使最终用户将锁定设备旋转,此解决方案也将完美运行。

    关于ios - 旋转设备时将按钮保持在同一位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267258/

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