@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)
}
}
Swift 指南针实现
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。