因为最近遇到了绘制虚线的问题,所以把问题的解决办法记录下来。
我把这个方法封装了一个类,请看代码
DrawDottedLine.h文件
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface DrawDottedLine : NSObject
// 对外提供画虚线的方法
+ (void)drawDashLine:(UIView *)lineView lineLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor *)lineColor;
@end
DrawDottedLine.m文件
#import "DrawDottedLine.h"
@implementation DrawDottedLine
- (instancetype)init
{
self = [super init];
if (self) {
}
return self;
}
/* 参数说明
lineView:用来画虚线的视图
lineLength:虚线中实线的长度
lineSpacing:虚线中空白的长度
lineColor:虚线的颜色
*/
// 划线的方法
+ (void)drawDashLine:(UIView *)lineView lineLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor *)lineColor
{
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
[shapeLayer setBounds:lineView.bounds];
[shapeLayer setPosition:CGPointMake(CGRectGetWidth(lineView.frame) / 2, CGRectGetHeight(lineView.frame))];
[shapeLayer setFillColor:[UIColor clearColor].CGColor];
// 设置虚线颜色为blackColor
[shapeLayer setStrokeColor:lineColor.CGColor];
// 设置虚线宽度
[shapeLayer setLineWidth:CGRectGetHeight(lineView.frame)];
[shapeLayer setLineJoin:kCALineJoinRound];
// 设置线宽,线间距
[shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:lineLength], [NSNumber numberWithInt:lineSpacing], nil]];
// 设置路径
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddLineToPoint(path, NULL, CGRectGetWidth(lineView.frame), 0);
[shapeLayer setPath:path];
CGPathRelease(path);
// 把绘制好的虚线添加上来
[lineView.layer addSublayer:shapeLayer];
}
@end