iOS 开发之绘制虚线

xiaoxiao2021-02-28  124

有时项目中页面设计遇到虚线…虚线怎么绘制呢?代码是这样的

绘制虚线代码示例——亲测!好用

#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:

如下图显示:

转载请注明原文地址: https://www.6miu.com/read-50022.html

最新回复(0)