UIView上使用UIBezierPath画线

最近在一个项目中需求是在一个地图的View上画一个导航的路径,经过尝试,我的方法是:

#import <UIKit/UIKit.h>

@interface MapPathView : UIView

@property(nonatomic,strong)NSMutableArray *pathPoints;

-(void)drawPaths;

@end


#import "MapPathView.h"

@implementation MapPathView

+(Class)layerClass{
    return [CAShapeLayer class];
}


-(instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        _pathPoints = [[NSMutableArray alloc] init];
        self.backgroundColor = [UIColor clearColor];
        ((CAShapeLayer *)self.layer).fillColor = nil;
        ((CAShapeLayer *)self.layer).strokeColor = [UIColor colorWithRed:68/255.0 green:52/255.0 blue:24/255.0 alpha:1.0].CGColor;
        ((CAShapeLayer *)self.layer).lineWidth=1.5;
        ((CAShapeLayer *)self.layer).lineCap=@"round";
        ((CAShapeLayer *)self.layer).lineJoin=@"round";
    }
    return self;
}


-(void)drawPaths{
    if ([_pathPoints count] >= 2){
        //设置属性
        UIBezierPath *path = [UIBezierPath bezierPath];
        //UIBezierPath *path = [[UIBezierPath alloc] init];
        //path.lineWidth=2.0;
        //path.lineCapStyle=kCGLineCapRound;
        //path.lineJoinStyle=kCGLineCapRound;
        [path moveToPoint:[[_pathPoints firstObject] CGPointValue]];
        NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, [_pathPoints count] - 1)];
        [_pathPoints enumerateObjectsAtIndexes:indexSet
                                  options:0
                               usingBlock:^(NSValue *pointValue, NSUInteger idx, BOOL *stop) {
                                   [path addLineToPoint:[pointValue CGPointValue]];
                               }];
        ((CAShapeLayer *)self.layer).path = path.CGPath;
    }else{
        ((CAShapeLayer *)self.layer).path = nil;
    }
}
@end

注意:

+(Class)layerClass{
    return [CAShapeLayer class];
}
很重要


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值