【问题标题】:iOS code drawings vs pngiOS 代码绘图 vs png
【发布时间】:2013-12-27 02:06:46
【问题描述】:

我找到了一个将 SVG 图像直接转换为代码的程序。听起来像是解决 iOS 应用程序大小问题的史诗般的解决方案,但这里出现了一些障碍。 将复杂的图像绘制成 4k+ 行的核心代码。它大约 100 kB 的纯文件大小几乎等于初始 png 图像大小。

所以问题 - 从代码中绘制此类图像或更好地将 em 作为普通 png 包含在项目中是否有任何意义(总应用程序大小增益)?代码大小和二进制大小之间的比例是多少?或者我怎么计算它?

【问题讨论】:

  • 我认为性能考虑更重要。 drawRect 使用软件代码进行绘图,与 GPU 处理的 UIKIt Image 相比效率较低。
  • Kunal,正如我所测试的 - 从代码中绘制比纯图像插入更快。首先,您需要从捆绑包中获取图像。即便如此,在业务应用程序中也不急于快速渲染——0.02 秒或 0.002 秒——并不太重要。
  • 我不知道您是如何得出这个结论的。您不能只比较两个函数并据此得出结论。您的 drawRect 在您希望它高效的主线程上运行。 stackoverflow.com/questions/14659563/…
  • 顺便说一句,使用仪器并根据 fps 而不是绝对秒数比较数字。使用仪器使用核心动画工具对其进行测量。
  • 听起来很有趣。谢谢你的好信息。

标签: ios iphone image cocoa-touch svg


【解决方案1】:

经过多次研究,我发现 UIBezierPath 很好地解决了我的问题。 是的,UIBezierPath 只是基于 CPU 的 CoreGraphics 的一个包装,但正如 Apple 所建议的那样 - 为您的目的使用最高级别的抽象并让系统完成它。

使用 UIBezierPath 绘制矢量图像的性能对于任何 2D 界面元素都足够高。 正如我所测试的 - 即使对于最难的图像,视网膜显示的速度因子也约为 45-50 fps,这对于原始 UI 动画来说已经足够了。

所以结论是 - 使用代码绘制界面可以节省内存和神经。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-22
    • 2013-09-26
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2010-11-04
    • 2014-08-07
    相关资源
    最近更新 更多