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