iOS - 哪个是放置图像的更好选择?核心图形(PaintCode App)与图像文件(png)
iOS - which is the better option to put images? Core Graphics(PaintCode App) vs Image files(png)
我正在开发一个 iOS 应用程序,它使用了很多图像。我对如何在应用程序中加载图像感到困惑。 similar question 大约在 5 年前被问到。但从那以后发生了很多变化。所以我想,开始一个新线程会更有意义。
我觉得主要有两种选择:
使用 PaintCode 应用程序(您可以找到它 here),它为您提供 CG 代码以在运行时绘制图像。
放置 .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.
我主要担心的是:
- 在运行时绘制图像是否会影响性能和其他关键参数。
- 在什么情况下,png 文件会更合适。
所以,我在这里,向更多知识渊博的人征求意见。
提前致谢。
如果绘图简单 - 使用 Core Graphics。
您支持核心 Graphics/PaintCode 方法的所有观点都是正确的。
正如您所说,它是面向未来的,比导入资产灵活得多。
您想更改那个自定义按钮的颜色吗?在您的函数中输入不同的参数,而不是为每个分辨率重新制作 3 张图像。
你想按比例放大吗?只需用新尺寸重新绘制即可。
新的 iPhone 8s 会在不久的将来推出 4 倍显示?您的应用程序已经可以处理它。
正如您所说,它减小了您的应用程序包的大小,这太棒了。
- 这减少了用户的下载量,也减少了您对大小优化的担忧。
但是
使用 Core Graphics 绘图是 100% 在 CPU 上完成的,因此如果您在主线程上进行大量和复杂的绘图,将会影响性能。
与一样,复杂 CG 绘图的主要示例是具有大半径的阴影。另一个例子是在您的上下文中使用复杂的路径。
不过不要绝望,有办法解决这个问题!
您可以在后台线程上进行离屏绘图,然后将绘制的图像传递给主线程上的屏幕(您 必须 从主线程执行 UI 更新),但这仍然会导致一些延迟问题(图像不知从哪里出现在屏幕上)。但是,这可能是加载您将在应用程序后期使用的复杂绘图的好方法。
您还可以牺牲一些应用程序启动时间 通过在应用程序加载时加载您的 Core Graphics 图像,但这对用户来说可能是不希望的,具体取决于关于您需要绘制的图像的复杂性和数量。
您可以通过保留经常绘制的图像(按钮背景等)的缓存来重复使用绘图。这将通过牺牲性能来提高性能一点内存。 PaintCode 实际上 automatically does this when you use non-parameterised StyleKits.
尽管 iOS 硬件比以前 when this question was asked 快得多,但绘制 Core Graphics 代码的实际 CPU 用法比以前少得多,所以您现在可以在更快的设备上完成更复杂的绘图。
但是,您可能会发现在 Core Graphics 中创建一些复杂的绘图根本不可能,或者需要 永远 才能创建。在这种情况下,我绝对推荐使用图像。
As the answerer 非常雄辩地将 post 链接到:
The fastest program is the one that reaches the market first.
如果您发现自己花了数周时间尝试在 Core Graphics 中创建绘图,那么您最好只使用图像并更高效地花费时间!
尽管如此,只要您保持绘图简单,并尽可能重复使用绘图,您就不必担心使用 Core Graphics 时的性能问题。
在我看来,使用Core Graphics/PaintCode进行简单的绘图far利大于弊,只要使用得当
我正在开发一个 iOS 应用程序,它使用了很多图像。我对如何在应用程序中加载图像感到困惑。 similar question 大约在 5 年前被问到。但从那以后发生了很多变化。所以我想,开始一个新线程会更有意义。
我觉得主要有两种选择:
使用 PaintCode 应用程序(您可以找到它 here),它为您提供 CG 代码以在运行时绘制图像。
放置 .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.
我主要担心的是:
- 在运行时绘制图像是否会影响性能和其他关键参数。
- 在什么情况下,png 文件会更合适。
所以,我在这里,向更多知识渊博的人征求意见。 提前致谢。
如果绘图简单 - 使用 Core Graphics。
您支持核心 Graphics/PaintCode 方法的所有观点都是正确的。
正如您所说,它是面向未来的,比导入资产灵活得多。
您想更改那个自定义按钮的颜色吗?在您的函数中输入不同的参数,而不是为每个分辨率重新制作 3 张图像。
你想按比例放大吗?只需用新尺寸重新绘制即可。
新的 iPhone 8s 会在不久的将来推出 4 倍显示?您的应用程序已经可以处理它。
正如您所说,它减小了您的应用程序包的大小,这太棒了。
- 这减少了用户的下载量,也减少了您对大小优化的担忧。
但是
使用 Core Graphics 绘图是 100% 在 CPU 上完成的,因此如果您在主线程上进行大量和复杂的绘图,将会影响性能。
与
不过不要绝望,有办法解决这个问题!
您可以在后台线程上进行离屏绘图,然后将绘制的图像传递给主线程上的屏幕(您 必须 从主线程执行 UI 更新),但这仍然会导致一些延迟问题(图像不知从哪里出现在屏幕上)。但是,这可能是加载您将在应用程序后期使用的复杂绘图的好方法。
您还可以牺牲一些应用程序启动时间 通过在应用程序加载时加载您的 Core Graphics 图像,但这对用户来说可能是不希望的,具体取决于关于您需要绘制的图像的复杂性和数量。
您可以通过保留经常绘制的图像(按钮背景等)的缓存来重复使用绘图。这将通过牺牲性能来提高性能一点内存。 PaintCode 实际上 automatically does this when you use non-parameterised StyleKits.
尽管 iOS 硬件比以前 when this question was asked 快得多,但绘制 Core Graphics 代码的实际 CPU 用法比以前少得多,所以您现在可以在更快的设备上完成更复杂的绘图。
但是,您可能会发现在 Core Graphics 中创建一些复杂的绘图根本不可能,或者需要 永远 才能创建。在这种情况下,我绝对推荐使用图像。
As the answerer 非常雄辩地将 post 链接到:
The fastest program is the one that reaches the market first.
如果您发现自己花了数周时间尝试在 Core Graphics 中创建绘图,那么您最好只使用图像并更高效地花费时间!
尽管如此,只要您保持绘图简单,并尽可能重复使用绘图,您就不必担心使用 Core Graphics 时的性能问题。
在我看来,使用Core Graphics/PaintCode进行简单的绘图far利大于弊,只要使用得当