IOS绘制虚线的方法总结

2025-05-29 0 20

一、重写drawRect方法。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19
- (void)drawRect:(CGRect)rect

{

[super drawRect:rect];

CGContextRef currentContext = UIGraphicsGetCurrentContext();

//设置虚线颜色

CGContextSetStrokeColorWithColor(currentContext, [UIColor BlackColor].CGColor);

//设置虚线宽度

CGContextSetLineWidth(currentContext, 1);

//设置虚线绘制起点

CGContextMoveToPoint(currentContext, 0, 0);

//设置虚线绘制终点

CGContextAddLineToPoint(currentContext, self.frame.origin.x + self.frame.size.width, 0);

//设置虚线排列的宽度间隔:下面的arr中的数字表示先绘制3个点再绘制1个点

CGFloat arr[] = {3,1};

//下面最后一个参数“2”代表排列的个数。

CGContextSetLineDash(currentContext, 0, arr, 2);

CGContextDrawPath(currentContext, kCGPathStroke);

}

二、采用CAShapeLayer方式绘制虚线

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
CAShapeLayer *shapeLayer = [CAShapeLayer layer];

[shapeLayer setBounds:self.bounds];

[shapeLayer setPosition:CGPointMake(self.frame.size.width / 2.0, self.frame.size.height)];

[shapeLayer setFillColor:[UIColor clearColor].CGColor];

//设置虚线颜色

shapeLayer setStrokeColor:[UIColor BlackColor].CGColor];

//设置虚线宽度

[shapeLayer setLineWidth:self.frame.size.height];

[shapeLayer setLineJoin:kCALineJoinRound];

//设置虚线的线宽及间距

[shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:3], [NSNumber numberWithInt:1], nil]];

//创建虚线绘制路径

CGMutablePathRef path = CGPathCreateMutable();

//设置虚线绘制路径起点

CGPathMoveToPoint(path, NULL, 0, 0);

//设置虚线绘制路径终点

CGPathAddLineToPoint(path, NULL, self.frame.size.width, 0);

//设置虚线绘制路径

[shapeLayer setPath:path];

CGPathRelease(path);

//添加虚线

[self.layer addSublayer:shapeLayer];

关于这种方式已经有人整理出了一个非常好用的类方法,具体见下面这段代码,注意:下面非完整代码,如有需要,请自己百度搜索。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
/**

** lineView: 需要绘制成虚线的view

** lineLength: 虚线的宽度

** lineSpacing: 虚线的间距

** lineColor: 虚线的颜色

**/

+ (void)drawDashLine:(UIView *)lineView lineLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor *)lineColor

{

CAShapeLayer *shapeLayer = [CAShapeLayer layer];

.....

[shapeLayer setStrokeColor:lineColor.CGColor];

......

[shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:lineLength], [NSNumber numberWithInt:lineSpacing], nil]];

 ......

[lineView.layer addSublayer:shapeLayer];

}

三、经济实惠型:采用贴图的方式绘制虚线(需要设计师切图配合)

?

1

2

3

4

5
UIImageView *imgDashLineView =[[UIImageView alloc] initWithFrame:CGRectMake(15, 200, self.view.frame.size.width - 30, 1)];

[imgDashLineView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"xuxian.png"]]];

[self.view addSubview:imgDashLineView];

总结

以上内容部分来自于网络,本着分享的学习精神,如有涉及侵权问题,请及时告知。以上就是这篇文章的全部内容,欢迎大家一起探讨学习,有问题请留言,小编将会尽快对你的问题进行回复。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 IOS绘制虚线的方法总结 https://www.kuaiidc.com/92616.html

相关文章

发表评论
暂无评论