目录
实现思路:
每隔一段时间监听手机方向,如果发生改变就发送通知。
Swift版本
import CoreMotion // 导入框架
实现方法
class XZDeviceOrientation: NSObject {
private let sensitive = 0.77
private let motionManager = CMMotionManager()
private var direction: UIInterfaceOrientation = .portrait
// 每隔一个间隔做轮询
func start() {
print("------走了start")
motionManager.deviceMotionUpdateInterval = 0.5
if motionManager.isDeviceMotionAvailable {
motionManager.startDeviceMotionUpdates(to: OperationQueue.current!) {[weak self] (motion, error) in
self?.performSelector(onMainThread: #selector(self?.deviceMotion(motion:)), with: motion, waitUntilDone: true)
}
}
}
@objc func deviceMotion(motion: CMDeviceMotion) {
let x = motion.gravity.x
let y = motion.gravity.y
if y < 0 {
if fabs(y) > sensitive {
if direction != .portrait {
direction = .portrait
NotificationCenter.default.post(name: UIDevice.orientationDidChangeNotification, object: nil, userInfo: ["direction": direction])
}
}