一:基本画线:

使用贝赛尔曲线画:

//创建路径

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. Ubuntu 14.4 配置

    1.安装 Orcal Java 使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ppa:webupd8team/ ...

  2. October 19th Week 43rd Wednesday, 2016

    I find that the harder I work, the more luck I seem to have. 越努力,越幸运. However, I find that the harde ...

  3. mysql插入速度

    请参考 http://www.3lian.com/edu/2013/07-15/80916.html 分表查询   select * from (   select * from user0   un ...

  4. Struts2学习(一)

    struts2 就是 web层开发框架,符合MVC模式 入门程序 创建web工程 导入jar包 下载struts2的jar包  struts-2.3.15.1-all 版本. 注意:在struts2开 ...

  5. Python 打包和发布方法汇总

    以下主要Python打包汇总,作为学习备份: 一.使用python内部基础工具包Distutils打包程序 1. 在打包之前需要做的就是配置好安装脚本,一般为setup.py文件: 示例(setup. ...

  6. poj2955 Brackets (区间dp)

    题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...

  7. [spring源码学习]一、IOC简介

    一.程序实例 假设一个简单地实例,我们有一个人,人可能有姓名,年龄等属性,每天上下班的时候需要坐车,他可能做小轿车,suv等,这样一个场景.我们很容易想到如下代码: 1.人的对象类,包括两个属性,姓名 ...

  8. android--访问网络权限

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

  9. NOIp #2009

    http://files.cnblogs.com/files/radiumlrb/NOIP2009%E6%8F%90%E9%AB%98%E7%BB%84%E5%A4%8D%E8%B5%9B%E8%AF ...

  10. 【异常】ORA-01536: space quota exceeded for tablespace

    ### The error may exist in /src/main/resources/com/star/css/dao/sql/workflow.xml ### The error may i ...