您的位置:首页 > 移动开发 > IOS开发

ios 指南针

2015-09-15 16:42 369 查看

指南针图片 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 < 0)
{
return;
}

// 获取磁北方向(角度)
CGFloat angle = newHeading.magneticHeading;

// 角度--> 弧度
CGFloat hudu = angle / 180.0 * M_PI;

[UIView animateWithDuration:1 animations:^{
// 反向旋转图片(弧度)
self.compassView.transform = CGAffineTransformMakeRotation(-hudu);
}];

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: