iOS UIBezierPath 性能优化

此代码显著提升了常用 UIBezierPath 操作的性能,并且使 UIBezierPath API 更接近其 NSBezierPath 对应项。 关于此仓库的完整背景信息,请查看这篇博文,它解释了这个框架的作用

这段代码最初是Loose Leaf的一部分。 应用中其他的组件和库也已经开源

可以作为 Swift Package 使用!

通过 Swift Package Manager 在您的项目中安装 PerformanceBezier (版本 v1.3.0 及以上)!

这是什么?

这个框架为每个 UIBezierPath 添加了缓存,以便可以以恒定时间执行常用操作。 它还向 UIBezierPath 类添加了一些缺失的 NSBezierPath 方法。

将此框架链接到您的项目后,所有 Bezier 路径将自动升级为使用这种新的缓存。 无需自定义 UIBezierPath 分配或初始化。

例如,默认情况下,没有 O(1) 的方法可以从 UIBezierPath 中检索元素。 为了检索曲线的第一个点,您必须使用 CGPathApply() 并遍历整个路径才能检索该单个点。 这个框架改变了这一点。 对于许多算法来说,这会显著影响性能。

您正在使用 PerformanceBezier 吗?

请告诉我! 我很想知道 PerformanceBezier 在哪里使用,以及它如何影响您的应用程序。 请在 Twitter 上联系我 @adamwulf!

还有 - 如果您喜欢 PerformanceBezier,那么您一定会喜欢 ClippingBezier - 这是一种查找两个 UIBezierPath 之间的相交点、线和形状的简便方法。

文档

查看头文件以获取完整文档。

构建框架

此库将生成一个适当的静态框架包,该包可在任何 iOS7+ 项目中使用。

包含在您的项目中

  1. 链接到构建的框架。
  2. 将 "-ObjC++ -lstdc++" 添加到项目设置中的 Other Linker Flags 中
  3. #import <PerformanceBezier/PerformanceBezier.h>

JRSwizzle

这个框架包含并使用了 JRSwizzle 库,该库是在 MIT 许可下授权的。

许可证

Creative Commons License
本作品根据 Creative Commons Attribution 3.0 United States License 许可。

对于署名,请包括

  1. 提及原始作者 "Adam Wulf for Loose Leaf app"
  2. 链接到 https://getlooseleaf.com/opensource/
  3. 链接到 https://github.com/adamwulf/PerformanceBezier

支持这个框架

这个框架由 Adam Wulf (@adamwulf) 作为 Loose Leaf app 的一部分创建。

成为 Github Sponsor 并请我喝杯咖啡☕️,以继续工作 😄