CGPath和UIBezierPath()有什么区别?

时间:2014-08-23 01:24:38

标签: ios swift uibezierpath cgpath

目前,我正在尝试制作一个自定义按钮的动画,我有一个图像并且坐标有,但我发现你可以创建一个按钮/对象使用CGPath类或UIBezierPath类。有人可以告诉我两者之间有什么区别吗?

2 个答案:

答案 0 :(得分:19)

CGPath是CoreGraphics库中的opaque类型,而UIBezierPath是UIKit中的Obj-C类。 UIBezierPath是CGPath的包装器(您可以轻松地在它们之间进行转换),具有更多面向对象的接口和一些便利方法。使用CGPath可能会稍微快一点,因为它不必通过Obj-C(虽然谁知道它如何与Swift一起工作),并且它具有更高级的函数,如CGPathApply。重要的是,UIBezierPath符合NSCoding,这意味着您可以免费获得序列化/反序列化。

tl; dr:使用UIBezierPath,除非你有某些理由不这样做。

答案 1 :(得分:8)

为了扩展jtbandes写的内容,还有另一个区别:CGPath只是形状的数学描述。它没有特定于绘图的属性或功能。相反,绘图属性是CGContext的一部分,实际绘图操作也是如此。您可以在绘图操作之前在上下文中设置颜色,线宽等内容,但这些不是路径本身的一部分。

相比之下,UIBezierPath具有绘图属性和绘图操作。