iOS画图

2017-04-01  本文已影响0人  双鲶鱼

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

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


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

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

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

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

http://www.jianshu.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))

上一篇下一篇

猜你喜欢

热点阅读