使用Quartz的CGPathApply()
函数遍历构成路径的所有元素。如清单5-2所示,这使您能够将UIBezierPath
转换为其组件的数组。此代码清单转换和收集路径元素。结果是Objective-C BezierElement
对象的NSArray
,每个对象表示原始路径元素。
清单5-2 提取元素数组
1 | // Convert one element to BezierElement and save to array |
从Bezier路径提取元素使您能够对组件执行几何操作。然后,从已更新的组件重建Bezier路径。代码清单5-3显示了这个重组。它的BezierPathWithElements()
构造函数创建一个新路径,然后在每个元素上迭代调用addToPath:
。从实现中可以看出,此方法应用每个元素的点数值和类型来构建新路径。
清单5-3重组Bezier路径
1 | // Construct a Bezier path from an element array |
本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。