iOS开发CoreGraphics核心图形框架之一——CGPath的应用
iOS开发CoreGraphics核心图形框架之一——CGPath的应用
一、引言
CoreGraphics核心图形框架相较于UIKit框架更加偏于底层。在Objective-C工程中,CoreGraphics其中方法都是采用C语言风格进行编写的,同时其并不支持Objective-C的自动引用计数,在使用这个框架进行编程时,开发者要手动对内存进行管理。在Swift工程中,Apple使用Swift语言对CoreGraphics矿建进行了重构,将CGPath,CGMutablePaht等都重新定义为了类。CGPath可以理解为图形的路径,在Objective-C工程中,其实系统定义的一个内部结构体,开发者不可以直接使用,开发者CGPathRef和CGMutablePathRef别名作为CGPath的引用,实际上,CGPathRef和CGMutablePathRef都是CGPath结构体类型的指针,不同的是一个是const类型不可修改的,一个是可以修改的,系统定义如下:
1 | typedef struct CGPath *CGMutablePathRef; |
二、CGPath创建与内存管理的相关方法
关于CGPath的创建与内存管理的相关方法,列举如下:
1 | //这个方法获取CGPath类在CoreGraphics框架中的唯一标识 |
自定义一个View视图,在其drawRect方法中进行界面的绘制,示例代码如下:
1 | - (void)drawRect:(CGRect)rect { |
运行后效果如下图所示:

三、CGPath的路径绘制相关方法
1 | //将路径移动到一个点作为起点 |
示例代码如下:
1 | - (void)drawRect:(CGRect)rect { |
效果如下图所示:

四、CGPath中的其他方法汇总
1 | //判断某个路径是否为空 |
五、关于CGPathElement结构体
当每次向CGPath路径做操作时,操作的过程实际上都会被记录下来,每个操作行为节点都被封装为了CGPathElement结构体,开发者可以通过如下方法来获取所有操作行为:
1 | CGPathApply(pathRef, nil, func); |
CGPathApply()方法中的第3个参数为一个函数指针,示例C函数实现如下:
1 | void func(void * __nullable info, |
CGPathElement结构体的定义如下:
1 | struct CGPathElement { |
专注技术,热爱生活,交流技术,也做朋友。
——珲少 QQ群:203317592