5.4-路径后面的数学 发表于 2017-02-16 正如你现在看到的,UIBezierPath类支持三种贝塞尔段:直线,二次曲线和三次曲线。其中每个都能参与创建UIKit和Quartz绘图程序的复杂形状。检索组件直线和曲线使您能够计算其长度并沿其路径插值。有了这些知识,您可以在计算的点应用绘图函数,如图5-3所示。 图5-3这胡萝卜是沿着胡萝卜路径 ... 阅读全文 »
5.3-合法和非法路径 发表于 2017-02-15 合法路径始终以移动操作开始,后跟一系列直线和曲线,并以可选的关闭操作结束。您可以根据需要重复。以下是一个合法路径的总结: 1path :- ø | {move • (add)* • {add • close | ø}}* 路径可以完全为空,如下所示: 1UI ... 阅读全文 »
5.2-将贝塞尔曲线路径转换为元素数组 发表于 2017-02-14 使用Quartz的CGPathApply()函数遍历构成路径的所有元素。如清单5-2所示,这使您能够将UIBezierPath转换为其组件的数组。此代码清单转换和收集路径元素。结果是Objective-C BezierElement对象的NSArray,每个对象表示原始路径元素。 清单5-2 提取元 ... 阅读全文 »
5.1-路径元素 发表于 2017-02-13 您可以在图5-1中看到,UIBezierPath类支持三种贝塞尔元素:线段,二次曲线和三次曲线。每个元素代表描述路径布局方式的五个操作之一: kCGPathElementMoveToPoint - 此元素将路径的位置设置为新位置,但不添加任何直线或曲线。 kCGPathElementAddLine ... 阅读全文 »
(第5章)深入学习路径 发表于 2017-02-13 深入学习路径内部知识扩展了使用UIBezierPath类的方式。特别地,它使您能够利用存储在每个实例的底层CGPath中的CGPathElement数据结构来为许多常见的iOS绘图挑战生成解决方案。想要沿着路径的曲线放置对象吗?想要将路径划分为子路径并单独对它们着色?基于元素的解决方案使您能够做到 ... 阅读全文 »
(第4章)小结 发表于 2017-02-12 本章介绍了UIBezierPath类。它提供了该类的角色和可调整的属性的基本概述。你看到了如何填充和描边路径,以及如何构造复杂的形状。 您阅读了关于以常规和意想不到的方式构建新实例的方法。在进入更高级的路径主题之前,这里有一些最后的想法: 路径提供了一个强大的工具,用于表示几何信息和绘制材料到您的 ... 阅读全文 »
4.12-弯曲的形状 发表于 2017-02-12 图4-14显示了通过围绕中心点添加三次曲线而构建的简单形状的示例。它是通过使用构建您在图4-15中看到的形状的相同的方法创建的。 图4-15弯曲变化:这里显示的第四和第五形状使用了穿过中心的大的反向弯曲拐点。顶行:8点和-0.5弯曲,12点和-0.75弯曲,8点和0.5弯曲。底行:8点和-2.5弯 ... 阅读全文 »
4.11-Miter Limits 发表于 2017-02-11 Miter limits限制形状的尖锐度,如图4-14所示。当斜接角的对角线长度(即两条线之间的三角形连接)超过路径的限制时,Quartz会将这些点转换为斜角连接。 图4-14当形状达到斜角极限时,成角度的连接转换为平面斜角。 在左图像中,形状具有锐角。它的尖端延伸没有达到其路径的miter Li ... 阅读全文 »
4.10-Line Joins and Caps 发表于 2017-02-10 路径的lineJoinStyle属性确定如何绘制每条线与另一条线相交的点。Quartz提供了三种样式供您使用,如图4-12所示。默认值,kCGLineJoinMiter,创建一个锐角。kCGLineJoinRound,钝化这些边缘(使其成圆角)。最后的样式是kCGLineJoinBevel,它产生具 ... 阅读全文 »
4.9-构建多边形路径 发表于 2017-02-09 虽然UIBezierPath提供了简单的椭圆和矩形路径构建方法,但它不提供一个简单的多边形生成器。代码清单4-8填补了这个缺口,返回你要求边数的Bezier路径。它创建的一些基本形状如图4-10所示。 图4-10这些多边形贝塞尔曲线路径由清单4-8生成。形状分别具有3,4,5和8边。 此函数通过将 ... 阅读全文 »