正在为 iOS 个应用加载基于 SVG 的图像资源

Loading SVG based image assets for iOS app

我从 thenounproject 购买了一个图标作为 SVG 图像。然后,我使用名为 Gapplin 的 macOS 程序将此 SVG 导出为 PNG 图像。它以 100x100 像素的图像形式出现。

然后我使用预览程序打开此 PNG 图像,然后转到工具 -> 调整大小并创建 10x10、20x20 和 30x30 图像。然后我将这些图像加载为 Xcode 中的 1x、2x、3x。

这是正确的方法吗?

不,这不是最佳解决方案。

您当前的解决方案当然可行,但远非理想。这样做会损失(宝贵的!)图像质量( 了解更多详细信息)。您可以通过以下方式改善您的工作流程:

  • 从原始 SVG 文件导出 所有 3 种分辨率,确保您从基于矢量的图像源(使用 Gapplin 或其他一些图片应用程序);

  • 将您的 SVG 转换 为 PDF,然后 importing the PDF vector image file in Xcode(我上次检查时,Xcode 8 仍然没有直接支持 SVG 文件,所以我们现在只能使用旧的 PDF。

这两种方法在图像质量方面应该会产生非常相似的结果,并且是对您当前工作流程的改进。

关于应用程序文件大小,您应该不会再次看到这两种方法的区别。即使使用最后一种方法,Xcode 仍会在 构建时间 生成所需的资产,因此,您的应用程序将携带与第一种方法。

我知道这个答案出现在问题之后很久。但是从 Xcode 12 开始,使用 macOS 10.15 或更高版本、iOS 13 或更高版本以及 iPadOS 13 或更高版本的部署目标,您应该能够直接在资产目录中使用 SVG 图像。来自 Xcode 12 release notes:

Asset Catalogs
New Features

  • Added support for Scalable Vector Graphic (SVG) image assets. These preserve their vector representation with deployment targets of macOS 10.15 or later, iOS 13 or later, and iPadOS 13 or later. (18389814)

我还没有reason/chance自己使用,但听起来应该可以。