这篇文章给大家分享了iOS中绘制虚线常见的几种方式,大家可以根据自己的需求进行选择哪种方法,下面跟着小编来一起看看吧。
一、重写drawRect方法。
- (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方式绘制虚线
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];
关于这种方式已经有人整理出了一个非常好用的类方法,具体见下面这段代码,注意:下面非完整代码,如有需要,请自己百度搜索。
/**
** 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];
}
三、经济实惠型:采用贴图的方式绘制虚线(需要设计师切图配合)
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];
总结
以上内容部分来自于网络,本着分享的学习精神,如有涉及侵权问题,请及时告知。以上就是这篇文章的全部内容,欢迎大家一起探讨学习,有问题请留言,小编将会尽快对你的问题进行回复。
沃梦达教程
本文标题为:IOS绘制虚线的方法总结
基础教程推荐
猜你喜欢
- iOS开发 全机型适配解决方法 2023-01-14
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- Android实现短信验证码输入框 2023-04-29
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- Android开发Compose集成高德地图实例 2023-06-15
- iOS开发使用XML解析网络数据 2022-11-12
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07
- IOS获取系统相册中照片的示例代码 2023-01-03
- Flutter进阶之实现动画效果(三) 2022-10-28
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18