代码清单5-7使您能够插入一个路径实例,以查找沿其具有一定百分比的点。代码必须是广泛适用的,因为两件事情。首先,必须考虑所有情况 - 直线,三次曲线和二次曲线。这涉及到大量的switch语句来考虑和计算每种可能性。
第二,此方法返回一个可选的斜率 - 这是作为最后一个参数传递的CGPoint
地址。计算一个斜率需要的代码和计算实际的点一样多。你需要一个斜率值,因为它表示所讨论的点处路径的曲线的切线。这使得你可以让所有的形状朝向曲线的内部,如图5-3所示。
请注意,反转路径会使斜率反转。用于表示的每个点的项目曲线外侧的切线向内翻转,反之亦然。这是因为切线函数在Y轴上是对称的。从点p2移动到点p1而不是从p1移动到p2产生一个切线值,以及一个角度,它是原始值的负值。
使用这个百分比方法在计算上是昂贵的。在可能的情况下,您可能需要预先计算这些插值,并使用缓存的percentage-to-point数组来加快动画和布局。
清单5-7 路径插值
1 | // Calculate a point that's a given percentage along a path |
本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。