iOS 指南针

代码地址如下:
http://www.demodashi.com/demo/11107.html

高仿系统指南针,方向数据是地磁航向数据,有定位地理位置信息和地磁方向信息,可以和系统的指南针对比看一看。

一、运行效果预览

总效果.gif
效果.png

二、实现过程

1.继承于UIView创建一个带刻度标注的视图ScaleView,利用UIBezierPath和CAShapeLayer、UILabel,默认0刻度(北)在最上方。
//化刻度表
- (void)paintingScale{

    CGFloat perAngle = M_PI/(90);
    NSArray *array = @[@"北",@"东",@"南",@"西"];
     //画圆环,每隔2°画一个弧线,总共180条
    for (int i = 0; i < 180; i++) {
   
        CGFloat startAngle = (-(M_PI_2+M_PI/180/2)+perAngle*i);
        CGFloat endAngle = startAngle+perAngle/2;
        UIBezierPath *bezPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(self.frame.size.width/2, self.frame.size.height/2)
                                                               radius:(self.frame.size.width/2 - 50)
                                                           startAngle:startAngle
                                                             endAngle:endAngle
                                                            clockwise:YES];
        CAShapeLayer *shapeLayer = [CAShapeLayer layer];
     //每隔30°画一个白条刻度
        if (i%15 == 0) {
            shapeLayer.strokeColor = [[UIColor whiteColor] CGColor];
            shapeLayer.lineWidth = 20;
        }else{
            shapeLayer.strokeColor = [[UIColor grayColor] CGColor];
            shapeLayer.lineWidth = 10;
        }
        shapeLayer.path = bezPath.CGPath;
        shapeLayer.fillColor = [UIColor clearColor].CGColor;
        [_backgroundView.layer addSublayer:shapeLayer];

        //每隔30°画一个刻度的标注 0 30 60...
        if (i % 15 == 0){
            NSString *tickText = [NSString stringWithFormat:@"%d",i * 2];
            CGFloat textAngel = startAngle+(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值