iOS - 这是放置图像的更好选择吗?核心图形(PaintCode应用程序)vs图像文件(png)

Har*_*pta 11 performance resolution core-graphics ios paintcode

我正在开发一个使用相当多图像的iOS应用程序.我对如何在应用程序中加载图像感到困惑.大约5年前就提出了一个类似的问题.但从那时起,情况发生了很大变化.所以我想,开始一个新线程会更有意义.

我认为我有两种选择:

  1. 使用PaintCode应用程序(您可以在此处找到),它为您提供了在运行时绘制图像的CG代码.

  2. 放.png图像文件(1x,2x,3x)

关于第一个选项的事情是:

• The first most important and unbeatable feature: Draw dynamic images i.e. to be able to change the content and gives basic animation effects using variables and equations

• The second most important thing: parametric images that behaves perfectly when frame changes no stretching or distortion

• Less size - As we not gonna use image files, reduces the overall size of the app drastically (top concern these days). E.g. PaintCode App in itself weights only ~5 MB (leaving out icon files).

• Resolution independence

• Very easy to use. Especially you don't need to remember names. You simply make some function calls.
Run Code Online (Sandbox Code Playgroud)

我主要担心的是:

  1. 在运行时绘制图像是否会影响性能和其他关键参数.
  2. 在什么情况下,png文件会更合适.

所以,我在这里,寻求更多知识渊博的人的意见.提前致谢.

Ham*_*ish 13

如果绘图很简单 - 使用Core Graphics.

您对所有有利于Core Graphics/PaintCode方法的观点都是正确的.

正如你所说,它是未来的证明,比导入资产更灵活.

  • 您想要更改该自定义按钮的颜色吗?在函数中输入不同的参数,而不是为每个分辨率重新制作3个图像.

  • 你想扩大那个绘图?只需用新尺寸重新绘制它.

  • 新款iPhone 8s在不久的将来会推出4倍显示屏吗?您的应用已经可以处理了.

正如你所说,它减少了你的应用程序包的大小,这是惊人的.

  • 对于用户而言,下载量较少,而且对您的尺寸优化的担忧较少.

然而.

使用Core Graphics绘图是在CPU上完成的,因此如果在主线程上执行大量复杂的绘图,则会影响性能.

正如Tricertops所说,复杂CG绘图的一个主要例子是具有大半径的阴影.另一个例子是在您的上下文中使用复杂路径.

不要绝望,有办法打击这个!

  • 你可以做一个抽出屏后台线程,然后绘制的图像传递到屏幕在主线程(你必须做在主线程UI更新),但这还是会造成一定的延迟问题(图片只是出现在从哪儿的屏幕).但是,这可能是加载复杂图形的好方法,您将在应用程序的后期使用这些图形.

  • 您还可以通过在加载应用程序时加载Core Graphics图像来牺牲一些应用程序启动时间,但这可能对用户不利,具体取决于您需要绘制的图像的复杂程度和数量.

  • 您可以通过保留经常绘制的图像缓存(按钮背景等)来重复使用图形.这将通过牺牲一点RAM来提高性能.当您使用非参数化的StyleKits时, PaintCode实际上会自动执行此操作.

虽然,看到的iOS硬件是比它快得多,当这个问题被问,CPU的实际使用情况绘图核心图形的代码比以前要少得多,所以你现在可以在更快的设备更复杂的图纸脱身.

但是,您可能会发现某些复杂的绘图根本不可能,或者需要永久地在Core Graphics中创建.在这种情况下,我肯定会建议使用图像.

由于回答者非常雄辩地把你链接到的帖子:

最快的计划是首先进入市场的计划.

如果您发现自己花费数周时间尝试在Core Graphics中创建绘图,那么您最好只使用图像并更有效地花费时间!


虽然,只要您保持绘图简单,并在任何地方重复使用绘图,您就不必担心使用Core Graphics时的性能问题.

在我看来,使用Core Graphics/PaintCode进行简单绘图的优点远远超过了缺点,只要它被正确使用.