一:基本画线:

使用贝赛尔曲线画:

//创建路径

UIBezierPath* aPath = [UIBezierPath bezierPath];

//设置线宽

aPath.lineWidth = 5.0;

//线条拐角

aPath.lineCapStyle = kCGLineCapRound;

//终点处理

aPath.lineJoinStyle = kCGLineCapRound;

//画线的起点

[aPath moveToPoint:CGPointMake(100.0, 0.0)];

//画线的终点

[aPath addLineToPoint:CGPointMake(200.0, 40.0)];

[aPath addLineToPoint:CGPointMake(160, 140)];

[aPath addLineToPoint:CGPointMake(40.0, 140)];

[aPath addLineToPoint:CGPointMake(0.0, 40.0)];

[[UIColor RedColor] set]  //设置渲染的颜色

[aPath closePath]; //第五条线通过调用closePath方法得到的

[aPath stroke]; //Draws line 根据坐标点连线渲染

最后一句若为 [aPath fill ];意思是填充渲染

注:

最后渲染的代码要写在drawRect方法中

除了画直线

+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect ;     //画矩形

+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect ;  //画圆或者椭圆

+ (UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:( BOOL )clockwise;    //画弧线

二、画虚线的方法:

第一种:

UIBezierPath* aPath = [BezierPath bezierPath];

aPath.lineWidth = 5.0;

[aPath moveToPoint:CGPointMake(100.0, 0.0)];

[aPath addLineToPoint:CGPointMake(200.0, 40.0)];

[[UIColor RedColor] set]  //设置渲染的颜色

CGFloat dashPattern[] = {8,7};// 8实线,7空白

[aPath setLineDash:dashPattern count:1 phase:1];

[aPath stroke]; //Draws line 根据坐标点连线渲染

第二种:

- (void)drawLineWithNumArr:(NSArray *)lengthArr

{

CAShapeLayer *shapeLayer = [CAShapeLayer layer];

[shapeLayer setBounds:self.bounds];

[shapeLayer setPosition:CGPointMake(CGRectGetWidth(self.frame) / 2, CGRectGetHeight(self.frame))];

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

//  设置虚线颜色为blackColor

[shapeLayer setStrokeColor:[UIColor whiteColor].CGColor];

//  设置虚线宽度

[shapeLayer setLineWidth:self.m_LineWidth];

[shapeLayer setLineJoin:kCALineJoinRound];

//  设置线宽,线间距

[shapeLayer setLineDashPattern:lengthArr];

//  设置路径

CGMutablePathRef path = CGPathCreateMutable();

CGPathMoveToPoint(path, NULL, 0, 0);

CGPathAddLineToPoint(path, NULL,CGRectGetWidth(self.frame), 0);

[shapeLayer setPath:path];

CGPathRelease(path);

//  把绘制好的虚线添加上来

[self.layer addSublayer:shapeLayer];

}

用法:传进来一个数组:

arr = [NSArray arrayWithObjects:[NSNumber numberWithFloat:8], [NSNumber numberWithFloat:3],nil];   可以传多个,分别为线的长度,空白处的长度,线的长度,空白处的长度............依此类推

arr = [NSArray arrayWithObjects:[NSNumber numberWithFloat:8], [NSNumber numberWithFloat:3], [NSNumber numberWithFloat:5], [NSNumber numberWithFloat:3]nil];

//这样的数组依照线的长度和空白处的长度依次为8,3,5,3........8,3,5,3

第二种相对于第一种可以设置出每小段长度不同的虚线。

iOS小画板画线总结的更多相关文章

  1. [修复] Firemonkey 画线问题(Android & iOS 平台)

    问题:官方 QC 的一个 Firemonkey 移动平台画线问题: RSP-14309: [iOS & Android] Delphi 10.1 Berlin - drawing proble ...

  2. ios cocos2d 画线出现闪烁问题

    根据http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/ 用cocos2d ...

  3. HTML5自学笔记[ 12 ]canvas绘图小示例之鼠标画线

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等

    // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affec ...

  5. [ios]MKMapView中使用MKPolyline画线

    参考:http://blog.sina.com.cn/s/blog_9e8867eb0101dt76.html 首先在MapView.h中 #import <MapKit/MapKit.h> ...

  6. IOS 绘制基本图形( 画圆、画线、画圆弧、绘制三角形、绘制四边形)

    // 当自定义view第一次显示出来的时候就会调用drawRect方法- (void)drawRect:(CGRect)rect { // 1.获取上下文 CGContextRef ctx = UIG ...

  7. IOS简单画板实现

    先上效果图 设计要求 1.画笔能设置大小.颜色 2.有清屏.撤销.橡皮擦.导入照片功能 3.能将绘好的画面保存到相册 实现思路 1.画笔的实现,我们可以通过监听用户的 平移手势 中创建 UIBezie ...

  8. matplotlib画线(2)

    这篇随笔是matplotlib画线的补充>>> #nocl参数控制图例中有几列,>>> import numpy as np>>> import ...

  9. canvas小画板--(1)平滑曲线

    功能需求 项目需求:需要实现一个可以自由书写的小画板 简单实现 对于熟悉canvas的同学来说,这个需求很简单,短短几十行代码就能实现: <!doctype html> <html& ...

随机推荐

  1. 【Javascript】解决Ajax轮询造成的线程阻塞问题(过渡方案)

    一.背景 开发Web平台时,经常会需要定时向服务器轮询获取数据状态,并且通常不仅只开一个轮询,而是根据业务需要会产生数个轮询.这种情况下,性能低下的Ajax长轮询已经不能满足需求,频繁的访问还会造成线 ...

  2. 【Java EE 学习 31】【JavaScript基础增强】【Ajax基础】【Json基础】

    一.JavaScript基础增强 1.弹窗 (1)使用window对象的showModelDialog方法和showModelessDialog方法分别可以弹出模式窗口和非模式窗口,但是只能在IE中使 ...

  3. CountDownLatch

    使用的实例: @Override public <V> V get(Future<V> future) { final CountDownLatch l = new Count ...

  4. Jmeter之Web端HTTP性能测试(九)

    之前有跟大家讲过通过Badboy来录制脚本,这里就不多说了,需要的可以参考 Jmeter之Badboy录制脚本及简化脚本http请求(三) 这边就不用项目的链接了,直接采用http://www.cnb ...

  5. NOIP2009分数线划定【B004】

    [B004]分数线划定[难度B]—————————————————————————————————————————————————————————————————————————— [题目要求] 世博 ...

  6. python操作日期和时间的方法

    不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 ...

  7. maven ClassNotFoundException: org.springframework.web.context.ContextLoaderL

    信息: Starting Servlet Engine: Apache Tomcat/6.0.32 2012-3-31 9:39:40 org.apache.catalina.core.Standar ...

  8. Leetcode Longest Palindromic Substring

    Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...

  9. Tornado学习笔记12 tornado.httpserver-.非阻塞的Http服务器

    是一个非阻塞的,单线程的Http 服务器. 一般地,应用程序很少与HttpServer类直接交互,除非在进程开始时启动服务时(甚至在使用tornado.web.Applicaiton.listen时也 ...

  10. 图片过大,在div中不压缩的居中方法

    在图片全屏轮播时,为了兼容更大的屏幕,我们常常把图片设置为很大,但是在显示的过程中,如果让图片随浏览器自动变化的话,常常会把图片压缩变形,影响显示,在不压缩图片的情况下,如何只显示图片的中间部分呢? ...