前言:
這個小項目使用到了CoreLocation框架里面的設備朝向功能,對CoreLocation感興趣的可以翻一下之前的文章
在另一個博客站有朋友發現一個尷尬的問題(圖片的東西2個方向是不對的),原諒我的大意,趕時間就直接百度了張圖片,大家注意下就好了哈!sorry~
指南針實現
- 先來看看效果
- 項目主要部分就是接收到設備朝向后計算出旋轉的角度,然后旋轉一下我們指南針圖片就可以了
// 接收到設備朝向
- (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(碼云)上了 —— 網絡地址