Objective-C用UIBezierPath画图

原创 2016年08月31日 15:02:50

UIBezierPath是Core Graphics框架关于路径的封装。我们通过设置路径即可画出我们想要的一些简单图形。如一个简单的需求:IM消息的展示框的一个“尖”:
这里写图片描述
还有下面这个:
这里写图片描述
这样一个不规则的图形我们只需要在规则的矩形View右边紧挨着画一个小三角即可。下面的代码使用UIBezierPath画了一个三角形:

- (void)drawTrianglePath {

  //初始化
  UIBezierPath *path = [UIBezierPath bezierPath];
  //初始点
  [path moveToPoint:CGPointMake(20, 20)];
  //第二点
  [path addLineToPoint:CGPointMake(self.frame.size.width - 40, 20)];
  //第三个点
  [path addLineToPoint:CGPointMake(self.frame.size.width / 2, self.frame.size.height - 20)];

  // 最后的闭合线是可以通过调用closePath方法来自动生成的,也可以调用-addLineToPoint:方法来添加
  //  [path addLineToPoint:CGPointMake(20, 20)];

  [path closePath];

  // 设置线宽
  path.lineWidth = 1.5;

  // 设置填充颜色
  UIColor *fillColor = [UIColor greenColor];
  [fillColor set];
  [path fill];

  // 设置画笔颜色
  UIColor *strokeColor = [UIColor blueColor];
  [strokeColor set];

  // 根据我们设置的各个点连线
  [path stroke];
}

我们同样可以多设置一些点来绘制其他的图形,可以使用+ bezierPathWithOvalInRect:方法来画圆,当我们传的rect参数是一个正方形时,画出来的就是圆(矩形则是椭圆):

  UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(20, 20, self.frame.size.width - 40, self.frame.size.width - 40)];

使用UIBezierPath画的图需要放到view的drawRect方法中才能显示 ,如果想要在其他方法中显示需要借助CAShapeLayer类。把UIBezierPath类的path属性赋值给CAShapeLayer的path,然后将CAShapeLayer对象添加到对应View的layer上面即可。
这里有一篇博客介绍UIBezierPath的使用,很详细:http://www.huangyibiao.com/archives/190

版权声明:本文为博主原创文章,转载请注明出处。

推荐一个blog,iOS 绘图的学习 objective-c 绘图资料

http://donbe.blog.163.com/blog/static/1380480212010423113440827/ 想要学动画,那么就从绘图的基础学起吧 Applicat...
  • a21064346
  • a21064346
  • 2013年01月05日 15:58
  • 1879

iOS绘图-UIBezierPath的使用

UIBezierPath简单介绍 iOS系统本身提供了两套绘图的框架,即UIBezierPath 和 Core Graphics。使用UIBezierPath可以创建基于矢量的路径,此类是Cor...
  • sinat_30898863
  • sinat_30898863
  • 2016年03月07日 22:51
  • 1516

如何用UIBezierPath画线

UIBezierPath *path = [[UIBezierPath alloc] init]; 1. 创建
  • yang2735
  • yang2735
  • 2014年04月23日 17:29
  • 3306

iOS CAShapeLayer & UIBezierPath画线、画图

CAShapeLayer 继承与CALayer( 主要用于设置图层的形状) CAShapeLayer对象属性列表 属性名 描述 path CG...
  • u012498386
  • u012498386
  • 2017年04月27日 09:52
  • 188

iOS UIView上利用UIBezierPath 画线 并且计算线的角度

实现需求 1:两条相近的直线计算角度,并且合在一起 2:上一根有角度的不与下一根计算 3:角度显示要保存,撤销的时候清除 实现方法 ...
  • qq_27247497
  • qq_27247497
  • 2017年08月11日 17:28
  • 475

【iOS开发-画线】使用贝塞尔曲线(UIBezierPath)画线

步骤://创建贝塞尔曲线对象 UIBezierPath *currenPath = [UIBezierPath bezierPath]; currenPath.lineCapStyle = kCGLi...
  • ttf1993
  • ttf1993
  • 2015年05月19日 15:13
  • 1299

使用UIBezierPath平滑的画线

UIBezierPath 是根据 Core Graphic Framework 写出的 Class ,能够让我们在 UIView 上画出我们需要的图形,主要就是一个UIBezierPath对象和一个U...
  • huangmindong
  • huangmindong
  • 2014年04月29日 13:29
  • 815

Objective-C用UIBezierPath画图

UIBezierPath是Core Graphics框架关于路径的封装。我们通过设置路径即可画出我们想要的一些简单图形。如一个简单的需求:IM消息的展示框的一个“尖”,(下图是项目里的一条自定义消息类...
  • liu1347508335
  • liu1347508335
  • 2016年08月31日 15:02
  • 1893

iOS中 CoreGraphics快速绘图(详解) 韩俊强的博客

iOS中 CoreGraphics快速绘图详解 韩俊强的博客 iOS开发者交流QQ群: 446310206 欢迎加入 Core Graphics 和Quartz 2D的区别...
  • qq_31810357
  • qq_31810357
  • 2016年08月28日 17:51
  • 5579

学习UIBezierPath画图

基础知识 使用UIBezierPath可以创建基于矢量的路径,此类是Core Graphics框架关于路径的封装。使用此类可以定义简单的形状,如椭圆、矩形或者有多个直线和曲线段组成的形状等。 ...
  • xieliqiu
  • xieliqiu
  • 2016年06月02日 14:52
  • 564
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Objective-C用UIBezierPath画图
举报原因:
原因补充:

(最多只允许输入30个字)