需求:
需要實(shí)現(xiàn)虛線功能
實(shí)現(xiàn)方法:
方法一:
使用貝塞爾曲線實(shí)現(xiàn)
- (void)addBorderToLayer:(UIView *)view
{
CAShapeLayer *border = [CAShapeLayer layer];
// 線條顏色
border.strokeColor = [UIColor lightGrayColor].CGColor;
border.fillColor = nil;
UIBezierPath *pat = [UIBezierPath bezierPath];
[pat moveToPoint:CGPointMake(0, 0)];
if (CGRectGetWidth(view.frame) > CGRectGetHeight(view.frame)) {
[pat addLineToPoint:CGPointMake(view.bounds.size.width, 0)];
}else{
[pat addLineToPoint:CGPointMake(0, view.bounds.size.height)];
}
border.path = pat.CGPath;
border.frame = view.bounds;
// 不要設(shè)太大 不然看不出效果
border.lineWidth = 0.5;
border.lineCap = @"butt";
// 第一個(gè)是 線條長度 第二個(gè)是間距 nil時(shí)為實(shí)線
border.lineDashPattern = @[@6, @10];
[view.layer addSublayer:border];
}
方法二:
Quartz 2D繪制
- (void)addBorderToLayer2:(UIView *)view
{
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
[shapeLayer setBounds:view.bounds];
[shapeLayer setPosition:CGPointMake(CGRectGetWidth(view.frame) / 2, CGRectGetHeight(view.frame)/2)];
[shapeLayer setStrokeColor:[UIColor lightGrayColor].CGColor];
[shapeLayer setLineWidth:0.5];
// 設(shè)置線寬攒驰,線間距
[shapeLayer setLineDashPattern:@[@6,@10]];
// 設(shè)置路徑
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
if (CGRectGetWidth(view.frame) > CGRectGetHeight(view.frame)) {
CGPathAddLineToPoint(path, NULL, CGRectGetWidth(view.frame),0);
}else{
CGPathAddLineToPoint(path, NULL, 0,CGRectGetHeight(view.frame));
}
[shapeLayer setPath:path];
CGPathRelease(path);
// 把繪制好的虛線添加上來
[view.layer addSublayer:shapeLayer];
}