Bri*_*nCO 19 cgpath ios uibezierpath swift
目前,我正在尝试设计如何设置一个自定义按钮的动画,我有一个图像并具有坐标,但我发现你可以通过使用CGPath类或UIBezierPath创建一个按钮/对象类.有人可以告诉我两者之间有什么区别吗?
jtb*_*des 23
CGPath是CoreGraphics库中的opaque类型,而UIBezierPath是UIKit中的Obj-C类.UIBezierPath是CGPath的包装器(您可以轻松地在它们之间进行转换),具有更多面向对象的接口和一些便利方法.使用CGPath可能会稍微快一点,因为它不必通过Obj-C(尽管谁知道它如何与Swift一起工作)并且它具有更高级的功能,如CGPathApply.重要的是,UIBezierPath符合NSCoding,这意味着您可以免费获得序列化/反序列化.
tl; dr:使用UIBezierPath,除非你有某些理由不这样做.
Ken*_*ses 10
为了扩展jtbandes写的内容,还有另一个区别:CGPath
它只是形状的数学描述.它没有特定于绘图的属性或功能.相反,绘图属性是CGContext
实际绘图操作的一部分.您可以在绘制操作之前在上下文中设置颜色,线宽等内容,但这些不是路径本身的一部分.
相比之下,UIBezierPath
具有绘图属性和绘图操作.