IOS绘制虚线的方法总结

 更新时间:2016年09月06日 14:44:58   投稿:daisy  
这篇文章给大家分享了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开发中实现一个简单的图片浏览器的实例讲解

    这篇文章主要介绍了iOS开发中实现一个简单的图片浏览器的实例讲解,代码基础传统的Objective-C,需要的朋友可以参考下
    2016-01-01
  • IOS中UIWebView、WKWebView之JS交互

    IOS中UIWebView、WKWebView之JS交互

    本篇文章主要介绍了IOS中UIWebView、WKWebView之JS交互,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • iOS中UIAlertView警告框组件的使用教程

    iOS中UIAlertView警告框组件的使用教程

    需要注意的是在IOS8之后,UIAlertView和UIActionSheet这两个控件被UIAlertController代替,但是这两个控件依然可以使,下面我们就简单了解一下iOS中UIAlertView警告框组件的使用教程
    2016-05-05
  • iOS通过shell脚本批量修改属性

    iOS通过shell脚本批量修改属性

    这篇文章主要给大家分享了iOS通过shell脚本批量修改属性的相关知识点,希望我们整理的内容能够帮助到大家。
    2018-03-03
  • iOS简单画板开发案例分享

    iOS简单画板开发案例分享

    这篇文章主要为大家分享了iOS实现简单画板开发案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • iOS10 Xcode8开发适配问题及解决方案

    iOS10 Xcode8开发适配问题及解决方案

    前段时间升级了Xcode8,整体来说对OC的影响不大,但是还是会有这样那样的问题,下面小编给大家总结了遇到的适配问题及解决方案,对xcode8 ios10适配问题感兴趣的朋友一起看看吧
    2016-11-11
  • iOS中的UISlider滑块组件用法总结

    iOS中的UISlider滑块组件用法总结

    不仅是滑动开关,UISlider组件也是常用的进度条制作工具,这里我们就一起来看一下iOS中的UISlider滑块组件用法总结,需要的朋友可以参考下
    2016-06-06
  • 简述iOS属性中的内存管理参数

    简述iOS属性中的内存管理参数

    这篇文章主要介绍了简述iOS属性中的内存管理参数 的相关资料,需要的朋友可以参考下
    2018-02-02
  • iOS制作带弹跳动画发布界面

    iOS制作带弹跳动画发布界面

    这篇文章主要为大家详细介绍了iOS制作带弹跳动画发布界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • IOS collectionViewCell防止复用的两种方法

    IOS collectionViewCell防止复用的两种方法

    这篇文章主要介绍了IOS collectionViewCell防止复用的两种方法的相关资料,需要的朋友可以参考下
    2016-11-11

最新评论