有时项目中页面设计遇到虚线…虚线怎么绘制呢?代码是这样的
绘制虚线代码示例——亲测!好用
#pragma mark - 绘制虚线具体方法
/**
** lineView: 需要绘制成虚线的view
** lineLength: 虚线的宽度
** lineSpacing: 虚线的间距
** lineColor: 虚线的颜色
**/
+ (void)drawDashLine:(UIView *)lineView lineLength:(NSInteger)lineLength lineSpacing:(NSInteger)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];
[shapeLayer setStrokeColor:lineColor.CGColor];
// 设置虚线宽度
[shapeLayer setLineWidth:CGRectGetHeight(lineView.frame)];
[shapeLayer setLineJoin:kCALineJoinRound];
// 设置线宽,线间距
[shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithLong:lineLength], [NSNumber numberWithLong: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];
}
此方法可以作为 UIView 的拓展方法(Category)方便以后使用。
Example:
// 绘制红色虚线,宽度10,间距10,虚线高2
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(20, 60, self.view.size.width -2 * 20, 2)];
[self.view addSubview:lineView];
[UIView drawDashLine:lineView lineLength:10 lineSpacing:10 lineColor:[UIColor grayColor]];
Result:
如下图显示: