gpt4 book ai didi

iPhone – 导入/绘制 UI 图形元素的最佳方法? CGContextDrawPDFPage?

转载 作者:行者123 更新时间:2023-12-03 17:07:52 25 4
gpt4 key购买 nike

What is the best way to use the custom UI graphics on the iPhone?

我遇到了 CGContextDrawPDFPage 和 Panic 的 Shrinkit 。我是否应该使用 PDF 来存储矢量 ui 图形并使用 CGContextDrawPDFPage 加载它们来绘制它们。

之前我问过what way Apple store their UI graphics并得到了粉碎 png 的回答。我能想到的选项如下,但我也对任何其他技术感兴趣......

  1. PNG(位图图像​​)
  2. 自定义 UIView 绘图代码(从 Opacity 生成)
  3. PDF(我没用过这个方法,是用CGContextDrawPDFPage吗?)

这个问题仅适用于矢量图形(但我猜有些人可能只使用位图?)。寻找什么是标准/最有效/最高效的。

编辑:已添加赏金,我有兴趣听听与 UI 设计师合作的任何人的流程,或者他们自己就是 UI 设计师。以及关于分辨率独立性的提示,即针对 iPad/iPhone 高清 future 的证明。

非常感谢罗斯

最佳答案

我可以建议 3 种不同的方法,其中 2 种您已经提到过:

  1. 创建自定义 UIView。
  2. 在 CGLayer 中绘图。
  3. 从 PDF 加载。

每种都有其优点,具体取决于您想做什么:

UIView 与 CGLayer

就性能(一次性绘图)和易用性而言,两者之间应该没有太大区别(有细微差别,但不严重)。显然 Opacity 可以导出两者的源代码(我个人没有使用过它)。也就是说,在选择之前您应该考虑以下事项:

  1. 如果您有固定图像(您的问题表明如此),请使用 CGLayer。 CGLayer 对象将被缓存在图形设备上,因此重用它们会更快。即使清除缓存,您仍然使用相同的对象进行重绘,这意味着无需重新创建它。
  2. 另一方面,如果您需要在用户与应用交互时更改绘图,UIView 可能会更快,因为您可以灵活地仅更新图像的一部分,而不是更新图像的一部分。整个 View 。
  3. CGLayer 独立于 UI。因此,相同的代码适用于 Mac/iPhone/iPad,甚至可以保存到文件。

结论:使用CGLayer,除非是特殊情况。

CGLayer(在代码绘图中)与 PDF(从文件加载)

我对此没有任何基准,但我希望 CGLayer 稍微快一些:(1)不需要读取文件。 (2) pdf命令应该转换为系统的图形元素,这与创建CGLayer大致相同。 (3)我不确定pdf页面是如何缓存的,但我不期望它比CGLayer更快。不管怎样,除非你想优化到最后一毫秒,否则所有这些都不会有太大影响。同样,选择应该基于您的用例:

  1. CGLayer 为您的代码提供了更大的灵 active 。。您对 pdf 页面的唯一访问是通过 CGContextDrawPDFPage,这意味着即使是缩放/转换绘图等简单任务也会变得更加困难。
  2. 另一方面,在完成代码后使用 PDF 会更加灵活。您只需随时更新 pdf 文件、从网络加载等即可。
  3. 创建 pdf 可能比对绘图进行编码更容易。您可以使用任何您想要的应用程序,无需担心 API 和系统资源。毕竟,代码可以输出 pdf 文件,而不是相反。

结论:如果您不需要对绘图做太多操作(只想显示图标或其他内容),请使用 pdf。如果您需要在应用程序中处理它,请考虑 CGLayer。

当然,您可以随时混合使用您认为合适的方法:例如加载一个 pdf 文件,将其放入 CGLayer 中进行调整,用 UIView 绘制它,您可以在上面放置徽章!

关于iPhone – 导入/绘制 UI 图形元素的最佳方法? CGContextDrawPDFPage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com