iOS指南針

前言:

這個小項目使用到了CoreLocation框架裏面的設備朝向功能,對CoreLocation感興趣的可以翻一下之前的文章

有朋友發現一個尷尬的問題(圖片的東西2個方向是不對的),原諒我的大意,趕時間就直接百度了張圖片,大家注意下就好了哈!sorry~

指南針實現

  • 先來看看效果

指南針效果圖.gif

  • 項目主要部分就是接收到設備朝向後計算出旋轉的角度,然後旋轉一下我們指南針圖片就可以了
// 接收到設備朝向
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
    // 判斷朝向是否有效
    if (newHeading.headingAccuracy < 0) {
        return;
    }

    // 獲取設備朝向
    CLLocationDirection angle = newHeading.magneticHeading;

    // 將角度轉成弧度(角度 / 180.0 * M_PI)
    CGFloat hudu = angle / 180.0 * M_PI;

    // 因爲如果沒有動畫的話旋轉的時候回出現卡頓的現象,爲了更流暢,我們給它加個動畫
    [UIView animateWithDuration:0.1 animations:^{
        // 旋轉圖片
        self.comPassImage.transform = CGAffineTransformMakeRotation(-hudu);
    }];

}

  • 是不是很簡單,但是有一點需要注意 —— 調用磁力傳感器前我們需要先判斷一下設備的磁力計是否可以用,以防止磁力計壞掉而沒有運行成功
    // 判斷當前設備磁力計是否正常
    if (![CLLocationManager headingAvailable]) {
        return;
    }
  • 考慮到網絡速度問題,我將完整的項目放到了國內版的github(碼雲)上了 —— 網絡地址
發佈了80 篇原創文章 · 獲贊 249 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章