iOS画图

作者: 双鲶鱼 | 来源:发表于2017-04-01 17:26 被阅读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))

    相关文章

      网友评论

          本文标题:iOS画图

          本文链接:https://www.haomeiwen.com/subject/pgniottx.html