@IBOutlet weak var compassView: UIImageView!
lazy var locationM : CLLocationManager =
{
let locationM = CLLocationManager()
locationM.delegate = self
if #available(iOS 8.0, *)
{
locationM.requestAlwaysAuthorization()
locationM.pausesLocationUpdatesAutomatically = false
if #available(iOS 9.0, *)
{
locationM.allowsBackgroundLocationUpdates = true // IOS 9.0之后使
}
}
locationM.distanceFilter = 100
locationM.desiredAccuracy = kCLLocationAccuracyBest
return locationM
}()
override func viewDidLoad()
{
super.viewDidLoad()
view.backgroundColor = UIColor.systemPink
// 2. 使用位置管理者, 获取当前设备朝向
// "磁力计"传感器
if CLLocationManager.headingAvailable()
{
locationM.startUpdatingHeading()
}else
{
print(" 磁力器不可用")
}
}
//朝向更新
func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading)
{
// 1. 拿到当前设备朝向
/// 0- 359.9 角度
//磁力朝向
let angle = newHeading.magneticHeading
print(angle)
//2换算成弧度
let hudu = CGFloat(angle) / 180 * CGFloat.pi
//根据弧度转动图片
UIView.animate(withDuration: 0.5)
{
self.compassView.transform = CGAffineTransform(rotationAngle: -hudu)
}
}
网友评论