ios 指南针-LMLPHP
指南针图片  IBOutlet UIImageView *compassView
 1 #import "ViewController.h"
#import <CoreLocation/CoreLocation.h> #define isIOS(version) ([[UIDevice currentDevice].systemVersion floatValue] >= version)
/**
先决条件:真机测试,模拟器上没有磁力计 传感器 **/
@interface ViewController ()<CLLocationManagerDelegate> /** 位置管理者*/
@property (nonatomic, strong) CLLocationManager *locM;
/**指南针图片**/
@property (weak, nonatomic) IBOutlet UIImageView *compassView; @end @implementation ViewController #pragma mark - 懒加载
/** locM属性的懒加载 */
-(CLLocationManager *)locM
{
if (!_locM) {
// 1. 创建位置管理者
_locM = [[CLLocationManager alloc] init];
// 1.1 block , 代理, 通知
_locM.delegate = self; }
return _locM;
} -(void)viewDidLoad
{ // 获取设备方向
// ("磁力计", 判断设备是否支持传感器) if([CLLocationManager headingAvailable])
{
[self.locM startUpdatingHeading];
}else
{
NSLog(@"dang前不支持");
} } #pragma mark - CLLocationManagerDelegate /**
* 方向发生改变时调用
*
* @param manager 位置管理者
* @param newHeading 方向信息
*/
-(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
NSLog(@"%@", newHeading); /**
* CLHeading
magneticHeading : 磁北角度
trueHeading : 真北角度
*/ if(newHeading.headingAccuracy < )
{
return;
} // 获取磁北方向(角度)
CGFloat angle = newHeading.magneticHeading; // 角度--> 弧度
CGFloat hudu = angle / 180.0 * M_PI; [UIView animateWithDuration: animations:^{
// 反向旋转图片(弧度)
self.compassView.transform = CGAffineTransformMakeRotation(-hudu);
}]; } @end
04-03 08:09