iOS画图

在百度和简书上找到很多实现的代码。找到的实现方式对于刚接触的人来说,很乱,很多方式。为何呢:因为实现画图的代码有分三种。而大部分的博文里面都只介绍了其中的一种方式而已,所以我根据几种实现方式进行了统计,自己整理了如下的文章。并且给出自己的建议和理解。

如果存在不合理的地方请指出。


1.实现画图有三种代码可以实现:

UIBezierPath(贝塞尔曲线路径):使用面向对象方式编码

http://www.cnblogs.com/0320y/p/5082051.html

CGContextRef(图形上下文):是用函数式编码

//www.greatytc.com/p/afb7315768fa

CGMutablePathRef(图形路径):是用函数式编码

http://www.cnblogs.com/wxios/p/4533106.html

2.都能够实现简单的画图技巧

3.画图的几个注意点

3.1颜色:线条和填充

3.3线宽

3.3画图逻辑(图形的组成步骤)

3.4作画(画线还是填充)

3.5释放CGPathRef

3.6是否有虚线(lineDashPhase,lineDashPattern)

3.7是否完整的画图(StrokeStart,StrokeEnd)

4.实现思路

1.在drawRect方法中画图:使用三种方法都行(参考第一点)

2.使用CAShapeLayer(继承CALayer)在这个画布上作画,可以把这个图层添加到任何地方。

在使用画布的方法中可以使用贝塞尔曲线路径(UIBezierPath)图形路径(CGMutablePathRef)

在CAShapeLayer有个属性是path,就是给定图形路径。而使用UIBezierPath有个属性是CGPath。

5.个人总结和建议

建议使用CAShapeLayer和UIBezierPath方式完成画图,原因有:

1.都是面向对象设计,易理解。

2.使用图层可以在任何地方画图,不受限于drawRect的位置。

3.对于要做动画的代码而言,画图的代码完全可以复用。直接使用图形的路径就可以做到简单的动画。

4.不需要手动释放对象。(Ref结尾的需要手动释放内存(CGPathRef),除非是系统运行时默认会带上的(CGContextRef))

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 过年了,老家却没有网,用的朋友家的wifi,信号很不稳定,相当不爽。正好最近也有点郁闷,作为一个搬砖的人,倒...
    _onePiece阅读 3,715评论 0 3
  • 0 CGContextRef context = UIGraphicsGetCurrentContext(); 设...
    竖着走的大闸蟹阅读 3,398评论 1 3
  • CGContextRef:类似于画布 你在上面操作你想绘制的东西。UIBezierPath:类似于画笔 配置需要绘...
    那是什么阅读 2,361评论 0 0
  • 还记得第一次遇见你的时候,那时我们都不知道彼此之间有那样的一段旅程。 那时我还不知道我遇见的是你,在走廊上打闹的我...
    刺維na儿阅读 3,332评论 0 1
  • 1.归人 这一生的等待 只为 遇见你就笑 2.断线 我听过 关于你最好的消息 杳无音讯 3.他们说 他们说 上帝是...
    郑凌霄阅读 1,878评论 9 5