Swift 指南针实现

2020-05-01  本文已影响0人  越天高
 @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)
            
        }
            
    }
上一篇 下一篇

猜你喜欢

热点阅读